js循环队列

export default class MyCircularQueue{
  constructor (k){
    //用来保存数据长度为k的数据结构
    this.list=Array(k)
    this.front=0//队首的指针
    this.rear=0 //队尾的指针
    this.max=k //队列的长度
  }
  enQueue(num){
    if(this.isFull()){
      return false
    }else{
      this.list[this.rear]=num
      this.rear=(this.rear+1)%this.max
      return true
    }
  }
  deQueue(){
    let v=this.list[this.front]
    this.list[this.front]=''
    this.front=(this.front+1)%this.max
    return v
  }
  isEmpty(){
    return this.front===this.rear&&!this.list[this.front]
  }
  isFull(){
    return this.front===this.rear&&!!this.list[this.front]
  }
  Front(){
    return this.list[this.front]
  }
  Rear(){
    let rear=this.rear-1
    return this.list[rear<0?this.max-1:rear]
  }
}

  

原文地址:https://www.cnblogs.com/sunliyuan/p/13472378.html