【剑指offer】用两个栈实现队列 -- JavaScript实现

用两个栈实现队列

http://www.nowcoder.com/questionTerminal/54275ddae22f475981afa2244dd448c6

举例说明
1 2 3进栈
stack1 = 1 2 3
stack2 = null
将stack1的数据转移到stack2,注意先进后出
stack1 = null
stack2 = 3 2 1
此时若 1 要出栈,直接stack2.pop即可。
stack1 = null
stack2 = 3 2
2 出栈
stack1 = null
stack2 = 3
5 6 进栈
stack1 = 5 6
stack2 = 3
此时若要出栈,则必须先出stack2中的元素。
结论:stack1 用来进栈,stack2 用来出栈。按先进后出的顺序将stack1中的元素放入到stack2中,放完一次后,必须先将stack2中的元素全部出栈,才能继续将stack1中的元素放到stack2中。

let stack1 = [];
let stack2 = [];

function push(node)
{
    // stack1用来进栈
    stack1.push(node);
}
function pop()
{
    // stack2用来出栈
    // 若stack2中有元素,则必须先将stack2中的元素出栈,才能再次存放stack1中的元素
    if(stack2.length <= 0){
        while(stack1.length != 0){
            stack2.push(stack1.pop());
        }
    }
    return stack2.pop()
}
全部评论

相关推荐

死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务