JavaScript队列数据结构详解_第1页
JavaScript队列数据结构详解_第2页
JavaScript队列数据结构详解_第3页
JavaScript队列数据结构详解_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第JavaScript队列数据结构详解目录什么是队列?JavaScript中的队列JavaScript中的应用场景最近的请求次数补充总结写在前面:

在上一篇文章中介绍了栈这个数据结构,这篇文章介绍一下队列。

什么是队列?

队列是一种先进先出的数据结构,队列中允许两种基础操作,也就是插入和删除,也就是入队和出队;我们将队列中允许插入的一端称为队尾、允许删除的一端称为队头;

如下图展示了栈这个数据结构:

JavaScript中的队列

JavaScript并没有队列这个数据类型,但是可以通过数组进行模拟,而且数组中提供的push()和shift()选项,正好实现先入后出的的操作,

示例代码如下:

constqueue=[]

//入队

stack.push(1)

stack.push(2)

//出队

constv1=stack.shift()//1

constv2=stack.shift()//2

JavaScript中的应用场景

队列和栈一样,是算法和程序中最常用的辅助结构,其的应用十分广泛,比如以下场景:

现实生活中的排队,就比如说买饭排队,先去的先买,也就是先进先出;银行、营业厅等号叫号,例如:到了营业厅先去排号机哪里排号,然后等待叫号,叫号会依次叫号;JavaScript中的异步任务队列,异步任务队列是一个典型的应用队列的例子。

最近的请求次数

现在我们来做一个力扣的题来熟悉一下队列这个数据结构,这个题是【933.最近的请求次数】,主要题目描述是写一个****类来计算特定时间范围内最近的请求。

解题思路如下:

在类中创建一个队列,用于保存最近请求;ping时保存请求;判断队头请求时间是否比t-3000的时间少,如果是则出队,并继续判断,如果不是则返回队列长度。

实现代码如下:

varRecentCounter=function(){

this.q=[]

*@param{number}t

*@return{number}

RecentCtotype.ping=function(t){

this.q.push(t)

while(this.q[0]t-3000){

this.q.shift()

returnthis.q.length

};

补充

概念和结构:

队列是一种先进先出(FIFO)的数据结构。队列的第一个元素所在位置称为队头,最后一个元素所在位置称为队尾。不包含任何元素的队列称为空队列。

队列的操作:队列有五种常用操作,分别为:

入队enqueue(element)出队dequeue()检查队头元素front()检查队列是否为空isEmpty()获取队列的长度size()

JS实现:

JS里面的队列结构也是通过数组(Array)来实现的。

functionQueue(){

//私有变量不被外界获取

letqueue=[];

//入队

this.enqueue=function(element){

queue.push(element);

}

//出队

this.dequeue=function(){

returnqueue.shift();

}

//检查队头元素

this.front=function(){

returnqueue[0];

}

//检查队列是否为空

this.isEmpty=function(){

returnqueue.length===0;

}

//获取队列长度

this.size=function(){

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论