JavaScript 数据结构系列目录
一、双端队列的概述
什么是双端队列(Double-ended queue)
双端队列是一种允许我们同时从顶部和底部添加和移除的特殊队列。
而其在现实生活中的例子有餐厅排队等。如,一个刚买了票的人离开了,离开后突然有点问题想要咨询,就可以直接回到队伍的头部。同样的,如果尾部的人赶时间,他可以直接离开队伍。
二、创建一个双端队列类
和之前一样,我们先声明一个 Deque 类及其构造函数
class Deque {
constructor() {
this.count = 0;
this.lowestCount = 0;
this.items = {
};
}
}
既然双端队列是一种特殊队列,我们可以看到其构造函数中的部分代码和队列相同,包括相同内部属性和以下方法:isEmpty、clear、size 和 toString。
由于双端队列允许在两端添加和移除元素,所以还会有下面几个方法。
- addFront(element) : 该方法在双端队列的底部添加新的元素。
- addBack(element) : 该方法等同于 Queue 类中的 enqueue 方法。
- removeFront() : 该方法等同于 Queue 类中的 dequeue 方法。
- removeBack() : 该方法等同于 Stack 类中的 pop 方法。
- seeFrontTop : 该方法等同于 Queue 类中的 seeTop 方法。
- seeBackTop : 该方法等同于 Stack 类中的 seeTop 方法。
由于已经实现了部分方法,所以我们将只专注于 addFront 方法的逻辑。
其代码如下:
addFront(element)