亲宝软件园·资讯

展开

js双端队列 javascript实现双端队列

空谷丶幽兰 人气:0
想了解javascript实现双端队列的相关内容吗,空谷丶幽兰在本文为您仔细讲解js双端队列的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:js,双端队列,下面大家一起来学习吧。

1.双端队列

双端队列是一种允许我们同时从前端和后端添加和移除元素的特殊队列

2.双端队列的应用

一个刚买了票的入如果只是还需要再问一些简单的信息,就可以直接回到队伍头部,另外队伍末尾的人如果赶时间也可以直接离开队伍

3.双端队列的方法

addFront(element):该方法在双端队列前端添加新的元素
addBack(element):该方法在双端队列后端添加新的元素(实现方法和 Queue 类中的enqueue 方法相同)。
removeFront():该方法会从双端队列前端移除第一个元素
removeBack():该方法会从双端队列的后端移除第一个元素
peekFront():该方法返回双端队列的第一个元素。
peekBack()):该方法返回双端队列后端的第一个元素。

4.实现

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);

加载全部内容

相关教程
猜你喜欢
用户评论