【剑指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()
}
全部评论

相关推荐

07-09 15:14
南京大学 C++
点赞 评论 收藏
分享
07-01 13:37
门头沟学院 Java
steelhead:不是你的问题,这是社会的问题。
点赞 评论 收藏
分享
07-05 16:23
门头沟学院 Java
mengnankk:我投了300,约了5 6个面试。感觉项目写的太多了。一个项目就写五六个亮点,不是把整个项目的功能描述下。其他的没啥,简历看起来有点长
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 11:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务