[algorithme js] Implémentation de la file d'attente

À propos de la mise en œuvre de la file d'attente

  1. Utilisez 数组pour simuler
  2. Les caractéristiques de la file d'attente: premier entré, premier sorti (système de file d'attente)
  3. La fin d'insertion est la fin de l'équipe, ( rear), la fin de sortie est la tête de l'équipe, ( front)
  4. Comme il s'agit d'une insertion cyclique, une position est libérée pour éviter le problème que la paire vide et l'équipe complète ne peuvent pas être distinguées
  • Équipe complète:(this.rear+1)%this.maxSize==this.front
  • Équipe vide: this.front==this.rear

Principalement toujours correct showQueue, ce qui indique que c'est un peu difficile
. La longueur de la file d'attente:this.front+(this.rear-this.front+this.maxSize)%this.maxSize

//队列的实现;
//顺序队列以及循环队列
class Queue{
    
    
    constructor(maxSize){
    
    
        this.maxSize=maxSize;
        this.arr= Array(maxSize);
        this.front=0; //队列头
        this.rear=0;  // 队列尾
    }
    //判断是否满了
    isFull(){
    
    
        return (this.rear+1)%this.maxSize==this.front
    }
    //判断队列是否为空
    isVoid(){
    
    
        return this.front==this.rear
    }
    //添加数据到队列
    addQueue(num){
    
    
        if(this.isFull()){
    
    
            return;
        }else{
    
    
            this.arr[this.rear]=num;
            this.rear=(this.rear+1)%this.maxSize
        }
    }
    //出队列
    getQueue(){
    
    
        if(this.isVoid()){
    
    
            return;
        }else{
    
    
            let temp=this.arr[this.front];
            this.front=(this.front+1)%this.maxSize
            return temp
        }
    }
    showQueue(){
    
    
        //队列中有效的个数
        if(this.isVoid()){
    
    return;}
        else{
    
    
            for(let i=this.front;i<this.front+(this.rear-this.front+this.maxSize)%this.maxSize;i++){
    
    
                console.log(`arr[${
      
      i%this.maxSize}]=${
      
      this.arr[i%this.maxSize]}`);          
            }
        }

    }

}
let a=new Queue(5)
a.addQueue('A')
a.addQueue('B')
a.addQueue('C')
a.addQueue('D')
// a.addQueue('E')
a.getQueue()
a.getQueue()

a.addQueue('1')
a.addQueue('2')

// a.addQueue('3')

a.showQueue()
console.log(a.arr);

Mettez-le directement dans le navigateur pour réaliser une série d'opérations

Je suppose que tu aimes

Origine blog.csdn.net/ZHXT__/article/details/106976476
conseillé
Classement