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
  • asp之家 网络编程 m.aspxhome.com