javascript实现双端队列
作者:空谷丶幽兰 发布时间:2024-05-02 16:18:58
标签:js,双端队列
本文实例为大家分享了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


猜你喜欢
- 一、引子Django 分页查询并返回 json ,需要将返回的 queryset 序列化, demo 如下:# coding=UTF-8im
- Dreamweaver MX 2004新增加了表格宽度辅助线功能,让我们在编辑网页表格的时候能清楚地看到表格中各单元的宽度以及变化,很直观。
- 很久没有写文章,最近一直在忙于找工作和找房子。哎,现在终于安定下来了,哎,又叹息一下,是因为我把去淘宝面试的机会也推掉了,本来以为要卷铺盖回
- 本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下先上代码 #调用pygame库import py
- 全局变量与局部变量# num1是全局变量num1 = 1# num2是局部变量def func():num2 = 2在函数外(且不在函数里)
- 第一步:获取mysql YUM源进入mysql官网获取RPM包下载地址https://dev.mysql.com/downloads/rep
- 在matplotlib下,一个Figure对象可以包含多个子图(Axes),可以使用subplot()快速绘制,其调用形式如下:subplo
- 一、前言很多网站提供视频转GIF的功能,但要么收费要么有广告实际上我们通过python,几行代码就能够实现视频转gif二、教程1. 安装必备
- 在日常生活中,经常会遇到需要提交身份证正反面证明资料的情况,而且这些网站大部分只接受pdf格式,这时候我们就需要把身份证正反面两张图片合成为
- 一、适合创建索引1、字段的数值有唯一性限制根据Alibaba规范,指明在业务上具有唯一特性的字段,即使是组合字段,也必须建成唯一索引。例如,
- 最近在使用Tensorflow 实现DNN网络时,遇到一些问题。目前网上关于Tensorflow的资料还比较少,现把问题和解决方法写出来,仅
- 由于谷歌浏览器80以后版本采用了新的加密方式,所以记录在这里# -*- coding:utf-8 -*-import osimport js
- 本文实例讲述了JavaScript点击按钮后弹出透明浮动层的方法。分享给大家供大家参考。具体分析如下:这里实现点击后页面变灰色,并用JS弹出
- 前言本文讲解如何加载json文件或字符串为pandas数据框。pandas把json数据分成几种典型类型,希望对你实际数据应用开发有所启示。
- NumPy是一个关于矩阵运算的库,熟悉Matlab的都应该清楚,这个库就是让python能够进行矩阵话的操作,而不用去写循环操作。下面对nu
- 相关代码如下: 1. 创建sequence: 代码如下:CREATE SEQUENCE SEQU_DATA_DATAINFO IN
- 1.mysql中or语法的使用,在mysql语法中or使用注意点。 项目遇到坑,遍历发放奖励数据查询错误!!!$sql = 'SEL
- 关于Keras中,当数据比较大时,不能全部载入内存,在训练的时候就需要利用train_on_batch或fit_generator进行训练了
- 先看一下合并后的样式,表格第二行,二三四列合并官网给我们提供了span-method的方法可以进行表格合并,有4个参数返回:row,colu
- 场景游戏里有很多关卡(可能有几百个了),理论上每次发布到外网前都要遍历各关卡看看会不会有异常,上次就有玩家在打某个关卡时卡住不动了,如果每个