【数据结构与算法】队列算法题

发布时间 2023-07-10 21:00:51作者: 努力挣钱的小鑫

TS 实现队列

interface IQueue<T> {
  // 入队
  enqueue(item: T): void;
  // 出队
  dequeue(): T | undefined;
  // 队首
  peek(): T | undefined;
  //是否为空
  isEmpty(): boolean;
  // 大小
  size(): number;
}

class ArrayQueue<T> implements IQueue<T> {
  private data: T[] = [];
  enqueue(item: T): void {
    this.data.push(item);
  }
  dequeue(): T | undefined {
    return this.data.shift();
  }
  peek(): T | undefined {
    return this.data[0];
  }
  isEmpty(): boolean {
    return this.data.length === 0;
  }
  size(): number {
    return this.data.length;
  }
}
// 测试用例
const queue = new ArrayQueue<number>();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
console.log(queue.size()); // 3
console.log(queue.peek()); // 1
console.log(queue.dequeue()); // 1
console.log(queue.size()); // 2
console.log(queue.isEmpty()); // false
console.log(queue.dequeue()); // 2
console.log(queue.dequeue()); // 3
console.log(queue.isEmpty()); // true

export default ArrayQueue;