js实现循环队列

↘锁芯ラ 提交于 2019-12-01 22:59:18

队列的定义:

队列(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
  }
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!