iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >如何在JavaScript中实现队列
  • 854
分享到

如何在JavaScript中实现队列

2024-04-02 19:04:59 854人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关如何在javascript中实现队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 队列数据结构队列是一种“先入先出”(FIFO)数据结构

这篇文章将为大家详细讲解有关如何在javascript中实现队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1. 队列数据结构

  • 队列是一种“先入先出”(FIFO)数据结构的类型。第一个入队项目(输入)是第一个出队(输出)。

  • 队列有2个指针:头和尾。队列中的最早排队的项目是在头部,而最新排队的项目在队列尾部。

  • 队列就像我们在地铁排队,靠近车门处的乘客位于队伍的头部,刚进入队伍的乘客位于队伍的尾部。

如何在JavaScript中实现队列

从更高的角度来看,队列是一种数据结构,可以让我们按照入库的顺序依次处理数据的每一项。

2. 队列上的操作

队列支持2个主要操作:入队和出队。此外,您可能会发现执行队列的 peek 和 length 操作很有用。

  • 入队操作
    入队操作是在队列尾部插入一个项目,插入的项目成为队列的尾部。

如何在JavaScript中实现队列

上图中的入队操作将项目 8 插入到尾部,8成为队列的尾部。

queue.enqueue(8);
  • 出队操作
    出队操作是在队列的开头提取项目,队列中的下一个项目成为头部项目。

如何在JavaScript中实现队列

在上图中,出队操作返回并 7 从队列中删除该项目,出队后,项目2成为新的头部项目。

queue.dequeue(); // => 7
  • 检视操作
    检视操作读取队列的开头,而不会更改队列。

如何在JavaScript中实现队列

项目7是上图中的队列的开头,检视操作仅返回标头(项目)7,而无需修改队列。

queue.peek(); // => 7
  • 队列长度
    长度操作计算队列包含多少个项目。

如何在JavaScript中实现队列

图中的队列中有4项:4,6,2,和7,结果,队列长度为4。

queue.length; // => 4
  • 队列操作时间复杂度
    对于所有队列操作(入队,出队,检视和长度)重要的是,所有这些操作必须在固定时间内执行O(1)。

恒定的时间O(1)意味着无论队列大小如何(它可以有10或100万个项目):入队,出队,窥视和长度操作都必须同时执行。

3. 在JavaScript中实现队列

让我们看一下队列数据结构的可能实现,同时保持所有操作必须在恒定时间内执行的要求O(1)。

class Queue {
  constructor() {
    this.items = {};
    this.headIndex = 0;
    this.tailIndex = 0;
  }

  enqueue(item) {
    this.items[this.tailIndex] = item;
    this.tailIndex++;
  }

  dequeue() {
    const item = this.items[this.headIndex];
    delete this.items[this.headIndex];
    this.headIndex++;
    return item;
  }

  peek() {
    return this.items[this.headIndex];
  }

  get length() {
    return this.tailIndex - this.headIndex;
  }
}

const queue = new Queue();

queue.enqueue(7);
queue.enqueue(2);
queue.enqueue(6);
queue.enqueue(4);

queue.dequeue(); // => 7

queue.peek();    // => 2

queue.length;    // => 3

const queue = new Queue()是如何创建队列的实例。

调用queue.enqueue(7)方法使该项目7进入队列。

queue.dequeue()从队列中取出一个头项,而queue.peek()只是从头检视。

最后,queue.length显示队列中还有多少项目。

关于实现:在Queue类内部,普通对象this.items通过数字索引保留队列中的项目。头项的索引由跟踪this.headIndex,尾项由跟踪this.tailIndex。

  • 队列方法的复杂性

类 Queue 的方法 queue(),dequeue(),peek()和length() 仅使用了:

属性访问(例如this.items[this.headIndex]),

或执行算术操作(例如this.headIndex++)

因此,这些方法的时间复杂度是恒定时间O(1)。

4. 总结

队列数据结构是“先入先出”(FIFO)的一种:最早入队的项是最早出队的项。

队列有2个主要操作:入队和出队。另外,队列可以具有辅助操作,例如检视和长度。

所有队列操作必须在恒定时间内执行O(1)。

关于“如何在JavaScript中实现队列”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: 如何在JavaScript中实现队列

本文链接: https://www.lsjlt.com/news/92179.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在JavaScript中实现队列
    这篇文章将为大家详细讲解有关如何在JavaScript中实现队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 队列数据结构队列是一种“先入先出”(FIFO)数据结构...
    99+
    2024-04-02
  • JavaScript中如何实现队列结构
    小编给大家分享一下JavaScript中如何实现队列结构,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript可以做什么1.可以使网页具有交互性,例如...
    99+
    2023-06-15
  • JavaScript如何实现队列结构
    这篇文章主要讲解了“JavaScript如何实现队列结构”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript如何实现队列结构”吧!一、认识队列前面的博客已经讲了受限的数据结构—...
    99+
    2023-06-21
  • javascript中如何实现队列数据结构
    这篇文章主要介绍javascript中如何实现队列数据结构,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!javascript是一种什么语言javascript是一种动态类型、弱类型的语言,基于对象和事件驱动并具有相对...
    99+
    2023-06-14
  • JavaScript如何实现优先级队列
    这篇文章主要讲解了“JavaScript如何实现优先级队列”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“JavaScript如何实现优先级队列”吧!一、优先级队列介绍我们知道,普通的队列插入...
    99+
    2023-06-21
  • 如何在PHP中实现消息队列?
    随着互联网应用和系统架构的复杂化,消息队列技术越来越被广泛应用。消息队列是一种异步处理消息的机制,常用于系统解耦、流量削峰、任务排队等场景。在PHP应用中,也可以使用消息队列来提高应用的可靠性、可扩展性、可维护性等方面的性能。本文将介绍如何...
    99+
    2023-05-14
    PHP 实现 消息队列
  • 如何在Java中实现阻塞队列
    如何在Java中实现阻塞队列?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java阻塞队列阻塞队列和普通队列主要区别在阻塞二字:阻塞添加:队列已满时,添加元素线...
    99+
    2023-06-15
  • js中如何实现队列
    这篇文章主要介绍了js中如何实现队列,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。队列定义队列(Queue)是一种遵从先进先出(First ...
    99+
    2024-04-02
  • JavaScript链表如何实现栈和队列
    这篇文章主要介绍了JavaScript链表如何实现栈和队列的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript链表如何实现栈和队列文章都会有所收获,下面我们一起来看看吧。链表的时间复杂度 如下:接...
    99+
    2023-06-19
  • javascript实现双端队列
    本文实例为大家分享了javascript实现双端队列的具体代码,供大家参考,具体内容如下 1.双端队列 双端队列是一种允许我们同时从前端和后端添加和移除元素的特殊队列 2.双端队列...
    99+
    2024-04-02
  • 如何在Redis中实现延迟任务队列
    在Redis中实现延迟任务队列可以使用有序集合(Sorted Set)和定时任务的方式来实现。以下是一个基本的实现方法: 将任务存...
    99+
    2024-04-09
    Redis
  • 如何在Redis中实现消息队列功能
    在Redis中实现消息队列功能通常可以通过使用Redis的List数据结构来实现。以下是一个简单的示例代码来实现消息队列功能: 将...
    99+
    2024-03-14
    Redis
  • JavaScript中怎么实现一个队列
    JavaScript中怎么实现一个队列,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.  队列数据结构如果你喜欢四处旅行,肯定在火...
    99+
    2024-04-02
  • golang如何实现队列
    golang可以使用标准库中的”container/list“包实现队列:1、使用import关键字导入包;2、定义函数”main“;3、通过”list.New()“函数创建了一个新的队列q;4、使用”PushBack()“方法向队列中添加...
    99+
    2023-12-12
    Golang golang实现队列
  • JavaScript实现优先级队列
    目录一、优先级队列介绍二、优先级队列封装一、优先级队列介绍 我们知道,普通的队列插入一个元素,数据会被放在后端,并且需要前面所有的元素都处理完成后才会处理前面的数据。但是优先级队列,...
    99+
    2024-04-02
  • Python中如何用栈实现队列
    Python中如何用栈实现队列,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。用栈实现队列题目:使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的...
    99+
    2023-06-02
  • Redis中如何实现消息队列和延时消息队列
    这篇文章将为大家详细讲解有关Redis中如何实现消息队列和延时消息队列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。list的几个命令lpush (left push)由...
    99+
    2024-04-02
  • 在java项目如何实现栈与队列
    在java项目如何实现栈与队列?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在java中要实现栈和队列,需要用到java集合的相关知识,特别是Stack、LinkedLis...
    99+
    2023-05-31
    java 队列
  • 如何在java数据结构中实现栈和队列
    这期内容当中小编将会给大家带来有关如何在java数据结构中实现栈和队列,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。java 数据结构中栈和队列的实例详解栈和队列是两种重要的线性数据结构,都是在一个特定的...
    99+
    2023-05-31
    java ava
  • JavaScript实现队列结构过程
    目录一、认识队列二、封装队列三、击鼓传花案列一、认识队列 前面的博客已经讲了受限的数据结构—栈,现在,我们再来看看队列(Queue)。 它是受限的线性表,先进先出(FIF...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作