摘要:隊(duì)列遵循原則的一組有序的項(xiàng)向隊(duì)列尾部添加一個(gè)項(xiàng)移除隊(duì)列的第一項(xiàng)返回隊(duì)列中第一項(xiàng),對(duì)隊(duì)列本身不做修改判斷隊(duì)列是否為空返回隊(duì)列包含的元素個(gè)數(shù)優(yōu)先隊(duì)列根據(jù)優(yōu)先級(jí)添加項(xiàng)最小優(yōu)先隊(duì)列移除隊(duì)列的第一項(xiàng)返回隊(duì)列中第一項(xiàng),對(duì)隊(duì)列本身不做修改判斷隊(duì)列是否
隊(duì)列遵循FIFO(First In First Out)原則的一組有序的項(xiàng)
let Queue = (function () { let item = new WeakMap(); class InnerQueue { constructor() { item.set(this, []) } /** * 向隊(duì)列尾部添加一個(gè)項(xiàng) * @param element */ enqueue(element) { item.get(this).push(element) } /** * 移除隊(duì)列的第一項(xiàng) */ dequeue() { return item.get(this).shift() } /** * 返回隊(duì)列中第一項(xiàng),對(duì)隊(duì)列本身不做修改 * @returns {*} */ front() { return item.get(this)[0] } /** * 判斷隊(duì)列是否為空 * @returns {boolean} */ isEmpty() { return item.get(this).length === 0 } /** * 返回隊(duì)列包含的元素個(gè)數(shù) * @returns {*} */ size() { return item.get(this).length } } return InnerQueue })();
優(yōu)先隊(duì)列
let PriorityQueue = (function () { let item = new WeakMap(); class InnerQueue { constructor() { item.set(this, []) } /** * 根據(jù)優(yōu)先級(jí)添加項(xiàng)(最小優(yōu)先隊(duì)列) * @param element * @param priority */ enqueue(element, priority = (item.get(this).length === 0 ? 1 : item.get(this)[item.get(this).length - 1].priority + 1)) { const queue = item.get(this); if (queue.length === 0) { item.get(this).push({element, priority}); return; } for (let i = 0; i < queue.length; i++) { if (priority < queue[i].priority) { item.get(this).splice(i, 0, {element, priority}); break; } else if (i === queue.length - 1) { item.get(this).push({element, priority}); break; } } } /** * 移除隊(duì)列的第一項(xiàng) */ dequeue() { return item.get(this).shift() } /** * 返回隊(duì)列中第一項(xiàng),對(duì)隊(duì)列本身不做修改 * @returns {*} */ front() { return item.get(this)[0] } /** * 判斷隊(duì)列是否為空 * @returns {boolean} */ isEmpty() { return item.get(this).length === 0 } /** * 返回隊(duì)列包含的元素個(gè)數(shù) * @returns {*} */ size() { return item.get(this).length } print() { return JSON.stringify(item.get(this)) } } return InnerQueue })();
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108867.html
摘要:定場(chǎng)詩(shī)馬瘦毛長(zhǎng)蹄子肥,兒子偷爹不算賊,瞎大爺娶個(gè)瞎大奶奶,老兩口過(guò)了多半輩,誰(shuí)也沒(méi)看見(jiàn)誰(shuí)前言本章為重讀學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)與算法第三版的系列文章,主要講述隊(duì)列數(shù)據(jù)結(jié)構(gòu)雙端隊(duì)列數(shù)據(jù)結(jié)構(gòu)以及隊(duì)列相關(guān)應(yīng)用。 定場(chǎng)詩(shī) 馬瘦毛長(zhǎng)蹄子肥,兒子偷爹不算賊,瞎大爺娶個(gè)瞎大奶奶,老兩口過(guò)了多半輩,誰(shuí)也沒(méi)看見(jiàn)誰(shuí)! 前言 本章為重讀《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)與算法-第三版》的系列文章,主要講述隊(duì)列數(shù)據(jù)結(jié)構(gòu)、...
摘要:哪吒社區(qū)技能樹(shù)打卡打卡貼函數(shù)式接口簡(jiǎn)介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號(hào)作者架構(gòu)師奮斗者掃描主頁(yè)左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無(wú)意間聽(tīng)到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡(jiǎn)而言之,不缺干 ? 哪吒社區(qū)Java技能樹(shù)打卡?【打卡貼 day2...
摘要:異或左移右移刪除屬性不同類(lèi)型之間比較在比較對(duì)象時(shí),比較的是引用和是內(nèi)部方法對(duì)不同的類(lèi)型返回結(jié)果如下表對(duì)不同類(lèi)型返回結(jié)果如下類(lèi)申明函數(shù)有兩種方法在原型上申明函數(shù),只會(huì)創(chuàng)建一次,在所有實(shí)例中共享,可以節(jié)約內(nèi)存和降低實(shí)例化的開(kāi)銷(xiāo)在類(lèi)定義中申明函數(shù) ^ 異或 > 右移 delete 刪除屬性 不同類(lèi)型之間==比較 showImg(https://segmentfault.c...
數(shù)組操作方法 方法 描述 備注 push() 將元素添加到數(shù)組末尾 修改原數(shù)組 unShift() 將元素插入到數(shù)組首位(將每項(xiàng)向后移動(dòng)一位,在第一位插入元素) 修改原數(shù)組 pop() 刪除數(shù)組最后一個(gè)元素 修改原數(shù)組 shift() 刪除數(shù)組第一個(gè)元素(將每項(xiàng)向前移動(dòng)一位并刪除最后一項(xiàng)) ...
摘要:在字典中,存儲(chǔ)的是鍵,值,集合可以看作值,值的形式存儲(chǔ)元素,字典也稱(chēng)為映射方法描述備注向字典中添加新元素通過(guò)某個(gè)鍵值從字典中移除對(duì)應(yīng)的數(shù)據(jù)值判斷某個(gè)鍵值是存在于這個(gè)字典中通過(guò)鍵值獲取對(duì)應(yīng)的數(shù)據(jù)值返回字典所有元素的數(shù)量刪除字典中所有元素將字典 在字典中,存儲(chǔ)的是[鍵,值],集合可以看作[值,值]的形式存儲(chǔ)元素,字典也稱(chēng)為映射 方法 描述 備注 set(key,...
閱讀 2347·2021-11-15 11:38
閱讀 3558·2021-09-22 15:16
閱讀 1200·2021-09-10 11:11
閱讀 3170·2021-09-10 10:51
閱讀 2950·2019-08-30 15:56
閱讀 2789·2019-08-30 15:44
閱讀 3194·2019-08-28 18:28
閱讀 3533·2019-08-26 13:36