题目:
用两个栈实现队列,支持队列的基本操作(add、poll、peek)。
add:添加
poll:头部弹出(且删除)
peek:查看首元素思路:
使用两个栈,分别为 StackPush 和 StackPop
1. 数据1,2,3,4,5,线一次压入StackPush,从定到底:5,4,3,2,1,,
2. 然后一到手进入StackPop 就实现了queue:1,2,3,4,5,先进先出

1.代码如下TwoStacksQueue.java和TwoStacksQueueTest.java:
package com.yuhl.right.TwoStacksQueue;import com.sun.java.accessibility.util.TopLevelWindowListener;import java.util.Stack;
public class TwoStacksQueue {
public Stack<Integer> stackPush;public Stack<Integer> stackPop;public TwoStacksQueue() {
stackPush = new Stack<Integer>();stackPop = new Stack<Integer>();}private void pushToPop() {
if (stackPop.empty()) {
while (!stackPush.empty()) {
stackPop.push(stackPush.pop());}}}public void add(int pushInt) {
stackPush.push(pushInt);pushToPop();}public int poll() {
if (stackPop.empty() && stackPush.empty()) {
throw new RuntimeException("Queue is empty!");}pushToPop();return stackPop.pop();}public int peek() {
if (stackPop.empty() && stackPush.empty()) {
throw new RuntimeException("Queue is empty!");}pushToPop();return stackPop.peek();}
}
class TwoStacksQueueTest{
public static void main(String[] args) {
TwoStacksQueue twoStacksQueue = new TwoStacksQueue();twoStacksQueue.add(1);twoStacksQueue.add(2);twoStacksQueue.add(3);twoStacksQueue.add(4);twoStacksQueue.add(5);int poll = twoStacksQueue.poll();System.out.println(poll);int peek = twoStacksQueue.peek();System.out.println(peek);}
}
2.执行结果:
"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe"
1
2