算法刷题笔记-两个栈实现队列

170 阅读1分钟

参考:B站UP--子烁爱学习(推荐大家观看原视频)

  • 题目描述:


  • 题目解析


  • 一个栈是不能完成队列的先进先出的概念的,只能依靠两个栈实现。

  • 首先,往栈1中进行push操作,然后,在要进行顺序取出的时候,就将栈1的数据pop到栈2中,这样就完成了顺序的颠倒,这时再进行栈2的pop操作,就可以实现先进先出,然后之后再进来的元素就先push进栈1,然后等栈2的数据被消耗殆尽了,再次进行栈1的pop操作,和栈2的pop操作,完成先进先出

  • 代码示例  

public class Algorithm05 {
    Stack<Integer> stack1 = new Stack<Integer>();
    Stack<Integer> stack2 = new Stack<Integer>();
	//将数据先push进栈1
    public void push(int node) {
        stack1.push(node);
    }
	//将数据先pop进栈2,栈2再pop出栈
    public int pop() {
        if(stack2.size()<=0){
            while(stack1.size()!=0){
                stack2.push(stack1.pop());
            }
        }
        return stack2.pop();
    }


}