两个栈组成的队列
Posted 澄海乌鸦
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个栈组成的队列相关的知识,希望对你有一定的参考价值。
设计思路:
1.设计两个栈,分别为stackPush和stackPop
2.stackPush作为压入栈,向stackPop压入数据,stackPop作为弹出栈,只弹出数据
压入和弹出需要满足下面两个条件:
1.如果stackPush要向stackPop压入数据的话,需要把stackPush中的数据全部压入
2.如果stackPop不为空,stackPush不能向stackPop中压入数据。
只要满足上面两个条件,就不会出错。
具体代码如下:
import java.util.Stack; public class TwoStacksQueue { public Stack<Integer> stackPush ; public Stack<Integer> stackPop ; public void add(int num) { stackPush.push(num) ; } public int poll() { if(stackPush.isEmpty() && stackPop.isEmpty()) { throw new RuntimeException("Queue is empty") ; } else if (stackPop.isEmpty()) { while(!stackPush.isEmpty()) { stackPop.push(stackPush.pop()) ; } } return stackPop.pop(); } public int peek() { if(stackPush.isEmpty() && stackPop.isEmpty()) { throw new RuntimeException("Queue is empty") ; } else if(stackPop.isEmpty()) { while(!stackPush.isEmpty()) { stackPop.push(stackPush.pop()) ; } } return stackPop.peek() ; } }
以上是关于两个栈组成的队列的主要内容,如果未能解决你的问题,请参考以下文章