成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法》筆記——第4章 隊(duì)列

callmewhy / 1060人閱讀

摘要:隊(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

相關(guān)文章

  • 重讀《學(xué)習(xí)JavaScript數(shù)據(jù)結(jié)構(gòu)算法-三版》- 5 隊(duì)列

    摘要:定場(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)、...

    charles_paul 評(píng)論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強(qiáng))

    摘要:哪吒社區(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...

    Scorpion 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)算法筆記——1 JavaScript簡(jiǎn)介

    摘要:異或左移右移刪除屬性不同類(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...

    Cheng_Gang 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)算法筆記——2 數(shù)組

    數(shù)組操作方法 方法 描述 備注 push() 將元素添加到數(shù)組末尾 修改原數(shù)組 unShift() 將元素插入到數(shù)組首位(將每項(xiàng)向后移動(dòng)一位,在第一位插入元素) 修改原數(shù)組 pop() 刪除數(shù)組最后一個(gè)元素 修改原數(shù)組 shift() 刪除數(shù)組第一個(gè)元素(將每項(xiàng)向前移動(dòng)一位并刪除最后一項(xiàng)) ...

    Martin91 評(píng)論0 收藏0
  • JavaScript數(shù)據(jù)結(jié)構(gòu)算法筆記——7 字典和散列表

    摘要:在字典中,存儲(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,...

    zorro 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<