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

用两个栈实现队列

题目描述

用两个栈来实现一个队列,完成队列的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)-用两个栈实现队列)