编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。
poll:获取并移除此队列的头,如果此队列为空,则返回 null。
peek:获取但不移除此队列的头;如果此队列为空,则返回 null。
add:将指定的元素插入此队列(如果立即可行且不会违反容量限制),在成功时返回 true,如果当前没有可用的空间,则抛出 illegalStateException。
offer:将指定的元素插入此队列(如果立即可行且不会违反容量限制),当使用有容量限制的队列时,此方法通常要优于 add(E),后者可能无法插入元素,而只是抛出一个异常。
remove:获取并移除此队列的头。此方法与 poll 唯一的不同在于:此队列为空时将抛出一个异常。
解析:
队列:先进先出
栈:先进后出
使用栈来模拟队列,需要用俩栈来完成。一个作为压入栈stackPush,另一个作为弹出栈stackPop。需要注意两点:
- 1.将stackPush里面的元素压入stackPop栈时,必须一次性的将全部元素压入其中;
2.StackPop不为空时,stackPush不能压入数据。
否则会造成数据的混乱。
代码实现:
package zuochengyun;
import java.util.Stack;
public class SimulationQueue {
public static class Queue{
private Stack<Integer>stackPush;
private Stack<Integer>stackPop;
public Queue(){
this.stackPush = new Stack<Integer