队列(Queue)是一种线性数据结构,其行为类似于现实世界的队列。它遵循先进先出(FIFO)的操作顺序,类似于现实世界的对应物。这意味着将新项目添加到队列的末尾,而从队列的开头删除项目。
JavaScript 队列可视化队列数据结构的主要操作有:
-
enqueue
:将元素添加到队列末尾 -
dequeue
:从队列的开头移除元素 -
peek
:检索队列开头的元素,而不删除它 -
isEmpty
:检查队列是否为空
JavaScript 实现
class Queue {
constructor() {
this.items = []
}
enqueue(item) {
this.items.push(item)
}
dequeue(item) {
return this.items.shift()
}
peek(item) {
return this.items[0]
}
isEmpty() {
return this.items.length === 0
}
}
- 使用
constructor
创建一个类(class
),为每个实例初始化空数组items
。 - 定义一个
enqueue()
方法,使用Array.prototype.push()
将元素添加到items
数组的末尾。 - 定义一个
dequeue()
方法,使用Array.prototype.shift()
从items
数组的开头删除元素。 - 定义一个
peek()
方法,检索items
数组中第一个元素的值,而不删除它。 - 定义一个
isEmpty()
方法,使用Array.prototype.length
判断items
数组是否为空。
const queue = new Queue()
queue.isEmpty() // true
queue.enqueue('A')
queue.enqueue('B')
queue.enqueue('C')
queue.enqueue('D')
queue.enqueue('E')
queue.isEmpty() // false
queue.peek() // 'A'
queue.dequeue() // 'A'
queue.dequeue() // 'B'
queue.dequeue() // 'C'
以上内容来自 30 seconds of code 的 JavaScript Data Structures - Queue
网友评论