JavaScript通过栈操作实现队列

初始化队列,创建两个空栈

var MyQueue = function() {
    this.stack1 = [];
    this.stack2 = [];
};

stack1主要存放数据,push()直接将数据放入stack1的末尾

MyQueue.prototype.push = function(x) {
    this.stack1.push(x);
};

pop()弹出队列的第一个数,即stack1最底层的数,此时需要用到栈二。
将stack1的数依次由上到下弹出后放入stack2,这时stack2顶端的数就是stack1第一个放入的数,弹出后再重复一次将stack2的数放入stack1

MyQueue.prototype.pop = function() {
    while(this.stack1.length != 0){
        this.stack2.push(this.stack1.pop());
    }
    let top = this.stack2.pop();
    while(this.stack2.length != 0){
        this.stack1.push(this.stack2.pop());
    }
    return top;
};

直接返回数组(stack1)第一个数即可

MyQueue.prototype.peek = function() {
    return this.stack1[0];
};

判断数据长度,返回即可

MyQueue.prototype.empty = function() {
    return this.stack1.length == 0;
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值