最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript實現(xiàn)雙端隊列

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

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

1.雙端隊列

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

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

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

3.雙端隊列的方法

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

4.實現(xiàn)

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

        // 在雙端隊列前端添加新元素
        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)文章

最新評論

黄浦区| 页游| 蛟河市| 定南县| 松潘县| 静海县| 彝良县| 瑞丽市| 牡丹江市| 石河子市| 沽源县| 德江县| 松潘县| 宾阳县| 津市市| 准格尔旗| 精河县| 绥德县| 昌图县| 长寿区| 绥化市| 常州市| 武宣县| 罗城| 建始县| 博乐市| 阜康市| 屯留县| 长海县| 德化县| 青铜峡市| 哈巴河县| 兴化市| 建平县| 富阳市| 大同市| 三穗县| 会理县| 长子县| 贵定县| 桦甸市|