用两个栈实现队列 (剑指Offer 第 5 题)

来源:互联网 发布:图灵出版社 java 编辑:程序博客网 时间:2024/06/09 13:49

题目描述:
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。


这里写图片描述


解题思路:
两个 先进后出 实现一个 先进先出 的功能!
整个流程如上图所示:队列的push操作就是stack1的push操作;队列的pop操作,先要判断stack2中是否为空,若为空,将stack1中的所有元素都倒进来(必须所有,保证了顺序),然后在执行stack2的pop操作弹出即可,若不为空,直接将stack2中元素弹出即可。
具体实现如下:


Java代码实现:


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.empty()){//判空            while(!stack1.empty()){//全部倒出                stack2.push(stack1.pop());            }        }        return stack2.pop();    }}

End

原创粉丝点击