队列的定义:
队列(queue),是先进先出的线性表。在具体的应用中通常使用链表或数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。
队列实现的方式有三种:1.单链队列、2.循环队列、3.阵列队列
单链队列不存在伪溢出,队列长度也没有限制,但在出队操作的时候需要O(n)的时间复杂度,所以引入了循环队列。

单链队列图
循环队列:
循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。
循环队列图示
下面使用代码实现循环队列:
class CircleQueue {
constructor(len) {
this.queue = new Array(len)
this.front = 0
this.rear = 0
this.count = 0
this.length = len
}
enQueue(value) {
if (this.count === this.length) {
//队列已满
return false
}
this.queue[this.rear] = value
this.count++
this.rear = (this.rear + 1) % this.length
return true
}
deQueue() {
if (this.count === 0) {
//队列为空
return false
}
this.count--
this.front = (this.front + 1) % this.length
return true
}
}