javascript实现双端队列
作者:空谷丶幽兰 时间:2024-05-02 16:18:58
本文实例为大家分享了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);
来源:https://blog.csdn.net/yangaoyuan1999/article/details/121102314
标签:js,双端队列
0
投稿
猜你喜欢
13家著名科技公司logo标识来历及演变
2008-02-19 16:42:00
Windows下安装MySQL5.5.19图文教程
2024-01-20 09:00:26
python selenium自动化测试框架搭建的方法步骤
2023-05-24 21:38:49
彻底理解Python中的yield关键字
2021-02-23 16:31:42
Python绘制正余弦函数图像的方法
2022-09-22 19:59:06
Flask框架之数据交互的实现
2023-01-25 05:41:10
Python进程间通信之共享内存详解
2022-01-06 05:47:10
如何制作K线图?
2010-06-29 17:25:00
再谈Python中的字符串与字符编码(推荐)
2023-06-15 23:25:08
Python pymysql模块安装并操作过程解析
2024-01-19 16:05:39
oracle中变长数组varray,嵌套表,集合使用方法
2024-01-20 19:51:19
python读写数据读写csv文件(pandas用法)
2021-06-15 15:28:03
Java连接mysql数据库的详细教程(推荐)
2024-01-26 10:30:35
有故事的网页设计——Flash网站奇妙之旅
2011-01-20 19:58:00
Ubuntu权限不足无法创建文件夹解决方案
2021-04-06 01:31:27
python爬取代理ip的示例
2022-01-20 11:41:12
zen coding的dreamweaver插件安装教程
2010-01-12 13:30:00
关于多域名COOKIES作用域的问题
2008-11-18 16:12:00
Django 限制访问频率的思路详解
2021-08-17 16:52:57
详解MySQL数据类型之数字类型正确使用
2010-06-20 15:02:00