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