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

用两个栈实现队列

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

题目描述
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
1、思路分析
一开始没有理解题目的意思,不知道从何写起。看了别人的代码后,再来理解了题目。直接用第一个栈的push方法可以实现队列的Push操作,但按照队列先进先出的特性,此时不能直接利用第一个栈或者第二个栈的pop操作,而是在第一个栈作为入队容器的情况下,再使用第二个栈来盛放第一个栈弹出的元素,此时再对第二个栈进行pop操作,刚好是按照先进先出顺序弹出的元素。值得注意的是,进行弹出操作时,先判断第二个栈是否有元素,如果没有,在队列存在元素的情况下即第一个栈不为空时,依次进行pop、push的操作,最后返回第二个栈弹出的元素。
2、代码

import java.util.Stack;

public class Solution {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();

    public void push(int node) {
        stack1.push(node);
    }

    public int pop() {
        if(stack2.size() <= 0) {
            while(stack1.size() != 0) {
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }
}
全部评论

相关推荐

10-12 19:08
666 C++
花开蝶自来_:技能:听动物叫,让雪豹闭嘴
点赞 评论 收藏
分享
10-05 11:11
海南大学 Java
投票
理想江南137:感觉挺真诚的 感觉可以试一试
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务