什么是队列

原文链接:https://note.noxussj.top/?source=helloworld


什么是队列?

队列是一种遵循先进先出原则的有序集合,添加新元素的一端称为队尾,另一端称为队首。

img

实现功能

在 JavaScript 中没有队列,但是可以通过 Array 实现队列的所有功能

  • enqueue () 入队
  • dequeue () 出队
  • top () 获取队首值
  • size () 获取队列的元素个数
  • clear () 清空队列

应用场景

  • JavaScript 异步任务中的任务队列
  • 计算最近请求次数

基础案例

通过数组实现

1const queue = [] 2queue.push(1) // 入队 3queue.shift() // 出队 4const top = queue[0] // 获取队首值 5const size = queue.length // 获取队列的元素个数 6queue.length = 0 // 清空队列

通过类模拟实现

1class Queue { 2 constructor() { 3 this.data = {} 4 this.count = 0 5 } 6 7 /** 8 * 入队 9 */ 10 enqueue(item) { 11 this.data[this.count++] = item 12 13 return item 14 } 15 16 /** 17 * 出队 18 */ 19 dequeue() { 20 if (this.count > 0) { 21 const item = this.data[0] 22 23 delete this.data[0] 24 25 this.count-- 26 27 return item 28 } else { 29 return -1 30 } 31 } 32 33 /** 34 * 获取队首值 35 */ 36 top() { 37 if (this.count > 0) { 38 return this.data[0] 39 } else { 40 return -1 41 } 42 } 43 44 /** 45 * 获取队列的元素个数 46 */ 47 size() { 48 return this.count 49 } 50 51 /** 52 * 清空队列 53 */ 54 clear() { 55 this.data = {} 56 this.count = 0 57 58 return {} 59 } 60} 61 62const queue = new Queue() 63 64queue.enqueue('a') 65queue.enqueue('b')
点赞
收藏

评论区

加载中...

相关推荐

java实现队列的详细代码

一、什么是队列结构一种线性结构,具有特殊的运算法则【只能在一端(队头)删除,在另一端(队尾)插入】。分类:1.顺序队列结构2.链式队列结构基本操作:1.入队列2.出队列  二:准备数据staticfinal intQUEUELEN15;classDATA{          String

【数据结构之队列】详细图解!在学习队列?看这一篇就够了!

提要钩玄:本文主要介绍队列的结构、基本原理及操作,涉及到两种实现:顺序队列和链队列。1.什么是队列?先举一个日常例子,排队买饭。大家按先来后到的顺序,在窗口前排队买饭,先到先得,买完之后走开,轮到下一位买,新来的人排在队尾,不能插队。可见,上面的“队”的特点是只允许从一端进入,从另一端离开。这样的一个队,放在数据结构中就是“队列”。首先,队列是一个,所以

Redis 发布订阅模式(7)

列表的局限前面我们说通过队列的rpush和lpop可以实现消息队列(队尾进队头出),但是消费者需要不停地调用lpop查看List中是否有等待处理的消息(比如写一个while循环)。为了减少通信的消耗,可以sleep()一段时间再消费,但是会有两个问题:1、如果生产者生产消息的速度远大于消费者消费消息的速度,List会占用大量的内存。2、

RokectMQ 顺序性 和分布式事务

1.顺序性是根据参数的id来使其同时投递到统一队列上。//RocketMQ通过MessageQueueSelector中实现的算法来确定消息发送到哪一个队列上//RocketMQ默认提供了两种MessageQueueSelector实现:随机/Hash//当然你可以根据业务实现自己的MessageQueueSelecto

C++ 优先队列priority_queue用法

头文件:include<queue操作:top访问队头empty队列是否为空size返回队列元素个数push插入元素到队尾pop弹出队头swap交换内容定义:1/2Type数据类型3Container容器类型(必须是vect

ConcurrentQueue队列的基本使用方式

 队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。  ConcurrentQueue<T队列是一个高效的线程安全的队列,是.NetFramework4.0,System.Collections.Concurren