Skip to content

双端队列的基本实现

笔记整理自 coderwhy 『TypeScript 高阶数据结构与算法』课程

特性

本质:允许队列在两端进行 入队出队 操作

设计

实现方式:基于 数组 实现

属性:

  • data:存放队列元素

方法:

  • enqueue(value):尾部入队
  • deleteBack:尾部出队
  • dequeue:头部出队
  • addFront(value):头部入队
  • peek:查看头部元素
  • isEmpty:判断队列是否为空
  • size:获取队列长度

具体代码

typescript
class ArrayDeque<T> {
  private data: T[] = [];

  // 尾部入队
  enqueue(value: T): void {
    this.data.push(value);
  }

  // 头部入队
  addFront(value: T): void {
    this.data.unshift(value);
  }

  // 头部出队
  dequeue(): T | undefined {
    return this.data.shift();
  }

  // 尾部出队
  deleteBack(): T | undefined {
    return this.data.pop();
  }

  // 查看头部元素
  peek(): T | undefined {
    return this.data[0];
  }

  // 队列是否为空
  isEmpty(): boolean {
    return this.data.length === 0;
  }

  // 获取队列长度
  get size(): number {
    return this.data.length;
  }
}

const arrayDequeue = new ArrayDeque<number>();

arrayDequeue.enqueue(123);
arrayDequeue.enqueue(234);

arrayDequeue.addFront(889);

console.log(arrayDequeue);

版权所有 © 2024 created by itchao