双端队列的基本实现
笔记整理自 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);