由两个栈组成的队列
编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。
java 堆栈中的方法poll和pop区别如下:
peek:返回但不移除队列的头
poll:可移除和返回队列的头package javalearning;
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>();
}
/**
*
* @param pushInt
* add:增加一个元素 如果队列已满,则抛出异常
*/
public void add(int pushInt){
stackPush.push(pushInt);
}
/**
*
* poll:移除并返回队列头部的元素,如果队列为空,则返回null
*/
public int poll(){
if(stackPop.empty()&&stackPush.empty()){
throw new RuntimeException("Queue is empty");
}else if(stackPop.empty()){
while(!stackPush.empty()){
stackPop.push(stackPush.pop());
}
}
return stackPop.pop();
}
/**
*
* peek:返回队列头部的元素,如果队列为空,则阻塞
*/
public int peek(){
if(stackPop.empty()&&stackPush.empty()){
throw new RuntimeException("Queue is empty");
}
else if(stackPop.empty()){
while(!stackPush.empty()){
stackPop.push(stackPush.pop());
}
}
return stackPop.peek();
}
}