À propos de la mise en œuvre de la file d'attente
- Utilisez
数组
pour simuler - Les caractéristiques de la file d'attente: premier entré, premier sorti (système de file d'attente)
- La fin d'insertion est la fin de l'équipe, (
rear
), la fin de sortie est la tête de l'équipe, (front
) - 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);