js如何用两个栈模拟队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

分析

队列特性:先进先出
栈:先进后出

js中我们用数组实现栈,单个数组 压栈push(),出栈pop(),

js中同样用数组实现队列,入队 push(),出队shift(),如果用两个栈(数组)则我们只需要将另外一个数组reverse()

代码

  1. 两个数组实现
let stackA = [];
let stackB = [];
function push(node) {
    // write code here
    let succ = false;
    if (typeof node === 'number') {
        stackA.push(node);
        succ = true;
    } else {
        succ = false;
    }
    return succ;

}
function pop() {
    // write code here
    let cur = null;
    if (stackB.length > 0) {
        cur = stackB.pop();
    } else {
        if (stackA.length > 0) {
            /* stackA.forEach(item=>{
                 stackB = stackA.reverce();
             })*/
            stackB = stackA.reverse();
            stackA = [];
            cur = stackB.pop();
        }
    }
    return cur
}

2.一个数组实现

let stackA = [];
function push(node) {
    // write code here
    let succ = false;
    if (typeof node === 'number') {
        stackA.push(node);
        succ = true;
    } else {
        succ = false;
    }
    return succ;

}
function pop() {
    // write code here
    let cur = null;
    if (stackA.length > 0) {
        cur = stackA.shift();
    }
    return cur
}

总结

js中实现栈和队列数据结构最主要是对数组的几个操作方法应用

pop 尾部删除,返回删除元素数组长度减一

push 尾部添加,数组长度加一

shift 头部删除,返回删除元素,长度减一

unshift 头部添加,长度加一

reverse 数组内容顺序反转

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值