[js算法]队列的实现

本文详细介绍了如何使用数组模拟队列的实现过程,重点讲解了队列的特征:先进先出原则,以及如何通过循环队列解决队满与队空的问题。文中提供了队列的构造方法、判断队列是否满或空、添加数据、删除数据及显示队列的具体代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于队列的实现

  1. 使用数组来进行模拟
  2. 队列的特征: 先进先出(排队系统)
  3. 插入端为队尾, (rear), 出口端为队头,(front)
  4. 由于是循环插入,所以空出一个位置,避免空对与满队无法区别的问题
  • 队满:(this.rear+1)%this.maxSize==this.front
  • 队空: this.front==this.rear

主要还是对showQueue,表示有些难度
其中的 队列length: 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);

直接在浏览器中放入,即可实现一系列的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值