美文网首页
<<剑指offer>>--javascript(5)-用两个栈实

<<剑指offer>>--javascript(5)-用两个栈实

作者: McRay | 来源:发表于2017-03-12 19:21 被阅读0次

    用两个栈实现队列

    题目描述

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

    function Stack(){
        var item = [];
        this.push = function(node){
            item.push(node);
        };
        this.pop = function(){
            return item.pop();
        };
        this.isEmpty = function(){
            return item.length === 0;
        };
    }
    var stack1 = new Stack();
    var stack2 = new Stack();
    function push(node)
    {
        stack1.push(node);
        // write code here
    }
    function pop()
    {
        if(stack1.isEmpty() && stack2.isEmpty()){
             throw new Error("Queue is empty");
        }
        if(stack2.isEmpty()){
            while(!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
        // write code here
    }
    module.exports = {
        push : push,
        pop : pop
    };
    

    解题思路

    是一种后进先出的数据结构,而队列是一种先进先出的数据结构,那么本题中,
    1、实现入队:将元素直接压入栈1。
    2、实现出队:先判断两个栈是否都为空,如果不是,在判断栈2,如果为空,栈1不为空,先将栈1的元素全部出栈,按顺序压入栈2,然后再从栈2中出栈,就取得了原来在栈1栈底的元素了。

    相关文章

      网友评论

          本文标题:<<剑指offer>>--javascript(5)-用两个栈实

          本文链接:https://www.haomeiwen.com/subject/qmkxnttx.html