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; }returnthis.items[this.lowestCount]; }; peekBack(){if(this.isEmpty()){return null; }return this.items[this.count-1]; }; isEmpty(){return this.count - this.lowestCount == 0; }size(){returnthis.count - this.lowestCount; }toString(){if(this.isEmpty()){return ''; }let objString = `${this.items[this.lowestCount]}`; for(var i=this.lowestCount+1; i
【javascript实现双端队列】以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
推荐阅读
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 事件代理
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 数组常用方法一
- 人脸识别|【人脸识别系列】| 实现自动化妆