首页 > 编程语言 >JavaScript实现数据结构 -- 队列

JavaScript实现数据结构 -- 队列

时间:2022-10-20 23:35:27浏览次数:49  
标签:const -- 代码 JavaScript queue 队列 入队 出队 数据结构

队列

队列是一个先进先出的数据结构。 图片来源于网络

JS模拟队列

虽然JavaScript中没有队列,但是我们可以用数组来实现队列的功能。

	// 用数组来模拟队列
	const queue = [];
	// 入队
	queue.push(0);
	queue.push(1);
	queue.push(2);
	// 出队
	const item0 = queue.shift();
	const item1 = queue.shift();
	const item2 = queue.shift();

入队出队过程

入队过程

执行第4行代码,将0入队。 在这里插入图片描述

执行第5行代码,将1入队。 在这里插入图片描述

执行第6行代码,将2入队。 在这里插入图片描述

出队过程

执行第8行代码,将0出栈。 在这里插入图片描述

执行第9行代码,将1出栈。 在这里插入图片描述 执行第10行代码,将2出栈。 在这里插入图片描述

队列的应用

有先进先出特点的问题,都可以尝试用队列来解决。

例:计算最近请求次数(leetcode:933)

在这里插入图片描述

思路

有新请求就入队,超时就出队;

最后队列的长度就是最近的请求次数;

代码

var RecentCounter = function() {
    // 在构造函数中将队列挂载到this上
    this.q = [];
};

RecentCounter.prototype.ping = function(t) {
    // 将新请求入队
    this.q.push(t);
    // 超时出队
    while(this.q[0] < t - 3000){
        this.q.shift();
    }
    return this.q.length;
};

在这里插入图片描述

标签:const,--,代码,JavaScript,queue,队列,入队,出队,数据结构
From: https://blog.51cto.com/u_15718546/5780800

相关文章

  • 操作系统导论 pdf
    作者:[美]RemziH.Arpaci-Dusseau/[美]AndreaC.Arpaci-Dusseau出版社:人民邮电出版社原作名:OperatingSystems:ThreeEasyPieces译者:王海鹏 链接:超标量......
  • TabControl控件
    TabControl控件,页面集合用于管理一个TabPages集合,每个TabPage都是一个容器控件 常用属性:MultiLine,TabPages,AlignMent,Appearance,ItemSize,ImagesList  知识点1:Mu......
  • Oracle中rownum和row_number()
    row_number()over(partitionbycol1orderbycol2)表示根据col1分组,在分组内部根据col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。与rownu......
  • k8s安装redmine
    ​课程内容:各种k8s部署方式。包括minikube部署,kubeadm部署,kubeasz部署,rancher部署,k3s部署。包括开发测试环境部署k8s,和生产环境部署k8s。腾讯课堂连接地址https://ke.qq.com......
  • Docker_基础知识
    容器概述容器本义:盛装物体、隔离物体。容器意义:解决虚拟化资源浪费的问题。容器沿革:1979---2013---                    版本:企业版(EE)/社区版(CE)1.......
  • JavaScript实现数据结构 -- 链表
    链表链表和数组一样是有多个元素组成的列表;不同的是链表元素存储不连续,用next指针连接在一起;链表的特点插入、删除不需要移动元素;不必事先分配存储空间;所需空间与长......
  • golang中的切片
    索引:https://waterflow.link/articles/1666277946416在go中切片的底层是数组,所以切片的数据连续存储在数组的数据结构中。如果底层的数组满了,切片还需要添加元素的话,底层数......
  • C语言多路开关模式的switch语句
    C语言多路开关模式的switch语句将switch语句中有的语句块的break删除掉。使多个语句块输出同一个。例子:输入一个月份,判断是几月份。#define_CRT_SECURE_NO_WARNINGS1#incl......
  • 【Oracle】准实时大规模数据提取
    文中使用的Oracle版本为10g。这篇文章是之前本人在前公司内部做可行性分析报告中的其中一个板块的内容,具体讲述的是为了做大规模数据提取和数据清洗做了一个试验demo。先说......
  • 博弈论专题3
    题目链接在这里:​​C-PalindromeGame(hardversion)_牛客竞赛博弈专题班组合游戏基本概念、对抗搜索、Bash游戏、Nim游戏习题(nowcoder.com)​​先占个坑,首先这不是经典......