队列
基本概念
队列是一种先进先出(FIFO, First In First Out)的线性数据结构
理解:排队上电梯,先上去的先出去
核心操作:
- 入队(Enqueue):将元素添加到队列的末尾
- 出队(Dequeue): 移除队列的第一个元素
- 查看对头(Peek):获取队列的第一个元素,但不移除
队列应用
EventLoop
JS 实现
基于数组
javascript
class Queue {
constructor() {
this.items = [];
}
enqueue(element) {
this.items.push(element);
}
dequeue() {
return this.items.shift();
}
// 查看队首元素
front() {
return this.items[0];
}
// 查看队列长度
size() {
return this.items.length;
}
// 清空队列
clear() {
this.items = [];
}
peek() {
return this.items[0];
}
}
const demo = new Queue();
demo.enqueue(1);
demo.enqueue(2);
demo.enqueue(3);
demo.enqueue(4);
console.log(demo.peek());
console.log(demo.dequeue()); // 1
console.log(demo.dequeue()); // 2
console.log(demo.dequeue()); // 3
console.log(demo.dequeue()); // 4缺点:
出队操作的时间复杂度 O(n),因为每次出队需要移动所有元素
