Skip to content

队列

基本概念

队列是一种先进先出(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),因为每次出队需要移动所有元素

made with ❤️ by ankang