欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript實(shí)現(xiàn)雙端隊(duì)列

 更新時(shí)間:2021年11月03日 11:37:44   作者:空谷丶幽蘭  
這篇文章主要為大家詳細(xì)介紹了使用javascript實(shí)現(xiàn)雙端隊(duì)列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了javascript實(shí)現(xiàn)雙端隊(duì)列的具體代碼,供大家參考,具體內(nèi)容如下

1.雙端隊(duì)列

雙端隊(duì)列是一種允許我們同時(shí)從前端和后端添加和移除元素的特殊隊(duì)列

2.雙端隊(duì)列的應(yīng)用

一個(gè)剛買了票的入如果只是還需要再問一些簡單的信息,就可以直接回到隊(duì)伍頭部,另外隊(duì)伍末尾的人如果趕時(shí)間也可以直接離開隊(duì)伍

3.雙端隊(duì)列的方法

addFront(element):該方法在雙端隊(duì)列前端添加新的元素
addBack(element):該方法在雙端隊(duì)列后端添加新的元素(實(shí)現(xiàn)方法和 Queue 類中的enqueue 方法相同)。
removeFront():該方法會從雙端隊(duì)列前端移除第一個(gè)元素
removeBack():該方法會從雙端隊(duì)列的后端移除第一個(gè)元素
peekFront():該方法返回雙端隊(duì)列的第一個(gè)元素。
peekBack()):該方法返回雙端隊(duì)列后端的第一個(gè)元素。

4.實(shí)現(xiàn)

class Deque{
           constructor(){
               this.items = {};
               this.count = 0;
               this.lowestCount = 0; 
           }

        // 在雙端隊(duì)列前端添加新元素
        addFront(element){
            if(this.isEmpty()){
                this.addBack(element);
            }
            else if(this.lowestCount > 0){
                this.lowestCount -- ;
                this.items[this.lowestCount] = element;
            }
            else{
                for(let i=this.count;i>0;i--){
                    this.items[i] = this.items[i-1]; 
                }
                this.lowestCount = 0;
                this.items[this.lowestCount] = element;
                this.count++;
            }
        };
        addBack(element){
            this.count++;
            this.items[this.count-1] = element;
        };
        removeFront(){
            if(this.isEmpty()){
                return undefined;
            }
            const result = this.items[this.lowestCount];
            delete this.items[this.lowestCount];
            this.lowestCount++;
            return result;
        };
        removeBack(){
            if(this.isEmpty()){
                return undefined;
            }
            const result = this.items[this.count-1];
            delete this.items[this.count-1];
            this.count--;
            return result;
        };
        peekFront(){
            if(this.isEmpty()){
                return null;
            }
          return   this.items[this.lowestCount];
        };
        peekBack(){
            if(this.isEmpty()){
                return null;
            }
            return this.items[this.count-1];
        };
        isEmpty(){
            return this.count - this.lowestCount == 0;
        }
        size(){
            return  this.count - this.lowestCount;
        }
        toString(){
            if(this.isEmpty()){
                return '';
            }
            let objString = `${this.items[this.lowestCount]}`;
            for(var i=this.lowestCount+1;i<this.count;i++){
                objString = `${objString},${this.items[i]}`;
            }
            return objString;
        }
        clear(){
            this.items={};
            this.count = 0;
            this.lowestCount = 0;
        }
   

       }

       const deque = new Deque();
       deque.addFront('John');
       deque.addFront('Jack');
       deque.addFront('Amy');
       deque.addBack('Lisa');
    //    deque.removeFront();
    //    deque.removeBack();
    console.log(deque.size());
    console.log(deque.toString());
    console.log(deque);
    console.log(deque.isEmpty());
       console.log(deque.clear());
       console.log(deque);

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • ES6新語法之解構(gòu)實(shí)踐指南

    ES6新語法之解構(gòu)實(shí)踐指南

    所謂解構(gòu)就是解構(gòu)聚合數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于ES6新語法之解構(gòu)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • 微信小程序?qū)崿F(xiàn)點(diǎn)擊出現(xiàn)彈窗

    微信小程序?qū)崿F(xiàn)點(diǎn)擊出現(xiàn)彈窗

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)點(diǎn)擊出現(xiàn)彈窗,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS實(shí)現(xiàn)不規(guī)則TAB選項(xiàng)卡效果代碼

    JS實(shí)現(xiàn)不規(guī)則TAB選項(xiàng)卡效果代碼

    這篇文章主要介紹了JS實(shí)現(xiàn)不規(guī)則TAB選項(xiàng)卡效果代碼,通過簡單的JavaScript響應(yīng)鼠標(biāo)事件動(dòng)態(tài)變換元素樣式實(shí)現(xiàn)不規(guī)則選項(xiàng)卡效果,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-09-09
  • JavaScript中創(chuàng)建對象和繼承示例解讀

    JavaScript中創(chuàng)建對象和繼承示例解讀

    這篇文章主要介紹了JavaScript中怎樣創(chuàng)建對象和繼承,需要的朋友可以參考下
    2014-02-02
  • webpack的pitching loader詳解

    webpack的pitching loader詳解

    這篇文章主要介紹了webpack的pitching loader詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • JavaScript庫之vanilla-tilt使用教程(一個(gè)平滑的3D傾斜庫)

    JavaScript庫之vanilla-tilt使用教程(一個(gè)平滑的3D傾斜庫)

    vanilla-tilt.js是Javascript中一個(gè)平滑的3D傾斜庫,可以讓網(wǎng)頁的一些控件變得動(dòng)態(tài)起來,下面這篇文章主要給大家介紹了關(guān)于JavaScript庫之vanilla-tilt使用的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • JavaScript ECMA-262-3 深入解析(一):執(zhí)行上下文實(shí)例分析

    JavaScript ECMA-262-3 深入解析(一):執(zhí)行上下文實(shí)例分析

    這篇文章主要介紹了JavaScript ECMA-262-3 執(zhí)行上下文,結(jié)合實(shí)例形式詳細(xì)分析JavaScript ECMA執(zhí)行上下文相關(guān)概念、原理與操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 求數(shù)組最大最小值方法適用于任何數(shù)組

    求數(shù)組最大最小值方法適用于任何數(shù)組

    之前雖然介紹過一種求數(shù)組最大最小值的方法,但那個(gè)方法只是用于數(shù)組中都是數(shù)字的,下面為大家介紹個(gè)方法適用于任何數(shù)組,有此需求的朋友可以參考下
    2013-08-08
  • JavaScript 面向?qū)ο蠡A(chǔ)簡單示例

    JavaScript 面向?qū)ο蠡A(chǔ)簡單示例

    這篇文章主要介紹了JavaScript 面向?qū)ο蠡A(chǔ),結(jié)合簡單實(shí)例形式分析了JavaScript面向?qū)ο蟪绦蛟O(shè)計(jì)中類的定義、類方法與屬性相關(guān)操作技巧,需要的朋友可以參考下
    2019-10-10
  • 小程序文字跑馬燈效果

    小程序文字跑馬燈效果

    這篇文章主要為大家詳細(xì)介紹了小程序文字跑馬燈效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-12-12

最新評論