您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery | 小程序 |

javascript实现双端队列

51自学网 2022-02-21 13:38:26
  javascript

本文实例为大家分享了javascript实现双端队列的具体代码,供大家参考,具体内容如下

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持51zixue.net。


下载地址:
JavaScript实现星座查询功能 附详细代码
vue实现GitHub的第三方授权方法示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。