Skip to content

JavaScript数据结构 - 队列

定义

队列是一种线性数据结构,类似于现实世界中的队列。它遵循先进先出(FIFO)的操作顺序,与现实世界的队列类似。这意味着新的元素被添加到队列的末尾,而元素从队列的开头被移除。

JavaScript队列可视化

队列数据结构的主要操作包括:

  • 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'