队列(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})。这样, 队列也就根据优先级排序了。

相关文章
|
10月前
|
缓存
指令缓存队列
指令缓存队列
39 0
|
5月前
队列的实现
队列的实现
|
5月前
|
C++
c++ 队列
队列的数据结构
21 0
|
6月前
12 队列
12 队列
17 0
|
7月前
|
算法
|
10月前
|
C语言
【Leetcode】队列实现栈和栈实现队列
【Leetcode】队列实现栈和栈实现队列
37 0
|
10月前
|
存储
队列的实现(下)
队列的实现(下)
|
10月前
|
机器学习/深度学习 存储 C语言
队列的实现(上)
队列的实现(上)
|
存储
队列的使用
队列的使用
64 0
|
前端开发 数据安全/隐私保护
队列
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。