队列(first in first out )

简介: 队列是遵循first in first out 原则的一组有序队列,队列从尾部添加新元素,从顶部移除元素,最新添加的元素必须排在队列的末尾。1.创建队列我们通过创建自己类来创建队列,先从最基本的声明开始:function Queue() {这里声明属性核对方法}首先需要一个用于存储队列中元素的数据结构。

队列是遵循first in first out 原则的一组有序队列,队列从尾部添加新元素,从顶部移除元素,最新添加的元素必须排在队列的末尾。

1.创建队列

我们通过创建自己类来创建队列,先从最基本的声明开始:
function Queue() {这里声明属性核对方法}
首先需要一个用于存储队列中元素的数据结构。我们可以使用数组,就像在上一章Stack类 中那样使用(你会发现Queue类和Stack类非常类似,只是添加和移除元素的原则不同)

img_99339994cc010ffbed9ced44c36df394.png
完整的Queue类

2.优先队列

img_c9c37826fbbaf95394e265a32cd7e6fc.png
优先队列

默认的Queue类和PriorityQueue类实现上的区别是,要向PriorityQueue添加元素,需 要创建一个特殊的元素(行{1})。这个元素包含了要添加到队列的元素(它可以是任意类型) 及其在队列中的优先级。

如果队列为空,可以直接将元素入列(行{2})。否则,就需要比较该元素与其他元素的优 先级。当找到一个比要添加的元素的priority值更大(优先级更低)的项时,就把新元素插入 到它之前(根据这个逻辑,对于其他优先级相同,但是先添加到队列的元素,我们同样遵循先进 先出的原则)。要做到这一点,我们可以用第2章学习过的JavaScript的array类的splice方法。 一旦找到priority值更大的元素,就插入新元素(行{3})并终止队列循环(行{4})。这样, 队列也就根据优先级排序了。

相关文章
|
存储 Kubernetes Cloud Native
带你读《存储漫谈Ceph原理与实践》第一章分布式存储概述1.3Ceph 的发展历程
《存储漫谈Ceph原理与实践》第一章分布式存储概述1.3Ceph 的发展历程
|
10月前
|
监控 API 索引
Elasticsearch集群使用 _cluster/health API
Elasticsearch集群使用 _cluster/health API
370 2
|
SQL 存储 关系型数据库
mysql事务失效
mysql事务失效
602 0
|
自然语言处理 算法 PyTorch
从零开始构建大语言模型(MEAP)(3)
从零开始构建大语言模型(MEAP)
261 1
|
11月前
|
移动开发 Java 大数据
深入探索Java语言的核心优势与现代应用实践
【10月更文挑战第10天】深入探索Java语言的核心优势与现代应用实践
435 4
|
存储 监控 数据安全/隐私保护
云上智能视频分析:重塑视觉监控与决策的未来
云上智能视频分析平台注重数据安全和隐私保护。通过采用多种技术手段确保视频数据在传输、存储和处理过程中的安全性和隐私性,保护用户隐私和商业秘密不受侵犯。 四、未来发展趋势 4.1 边缘计算与云计算融合 随着物联网设备数量的不断增加和数据量的快速增长,边缘计算将成为云上智能视频分析的重要发展方向。通过将计算能力和数据处理能力下沉到边缘侧,可以减少数据传输延迟和带宽消耗,提高系统的响应速度和稳定性。 4.2 跨领域融合与创新 云上智能视频分析技术将与物联网
414 7
|
Ubuntu 机器人 Shell
ubuntu20.04创建ros环境、创建rospackage
至此,我们已经详细讲解了在Ubuntu 20.04上创建ROS环境及ROS包的步骤。这为进一步的机器人软件开发奠定了坚实的基础。
576 1
|
监控 关系型数据库 MySQL
MySQL装机实战指南:从零开始构建高效数据库环境
通过本文的指南,您应该已经成功安装了MySQL,并对其进行了基本的配置和优化。MySQL是一个功能强大、灵活的数据库管理系统,通过不断的学习和实践,您将能够充分利用其潜力来满足您的业务需求。记住,定期备份数据库、更新软件以及进行性能监控是保持数据库环境健康和高效的关键。希望本文能对您有所帮助!
355 2
|
监控 Java 测试技术
Java性能测试与调优工具使用指南
Java性能测试与调优工具使用指南
|
安全 Linux 网络安全
BUUCTF:Misc 解析(七)
BUUCTF:Misc 解析(七)

热门文章

最新文章