文章目录

编写一个类,用两个栈实现队列,支持队列的基本操作(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();
}
}

文章目录