JavaScript数据结构 - 队列
定义
队列是一种线性数据结构,类似于现实世界中的队列。它遵循先进先出(FIFO)的操作顺序,与现实世界的队列类似。这意味着新的元素被添加到队列的末尾,而元素从队列的开头被移除。
队列数据结构的主要操作包括:
enqueue
:将元素添加到队列的末尾dequeue
:从队列的开头移除元素peek
:获取队列开头的元素,但不移除它isEmpty
:检查队列是否为空
实现
class Queue {
constructor() {
this.items = [];
}
enqueue(item) {
this.items.push(item);
}
dequeue() {
return this.items.shift();
}
```js
class Queue {
constructor() {
this.items = [];
}
enqueue(item) {
this.items.push(item);
}
dequeue() {
return this.items.shift();
}
peek() {
return this.items[0];
}
isEmpty() {
return this.items.length === 0;
}
}
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'
- 创建一个
class
,其中的constructor
初始化了一个空数组items
,用于每个实例。 - 定义一个
enqueue()
方法,使用Array.prototype.push()
将元素item
添加到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'