队列的定义:
队列(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 } }