编写一个类,用两个栈实现一个队列,支持队列的基本操作(add,poll,peek)
//编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)
import java.util.Stack;
public class TwoStackQueue{
Stack <Integer> stack1; //一个栈用于数据的压入
Stack <Integer> stack2; //一个栈用于数据的弹出
public TwoStackQueue()
{
stack1=new Stack<Integer>();
stack2=new Stack<Integer>();
}
//向队列中添加数据
public void add(int num)
{
stack1.push(num);
}
//从队列中弹出数据
public int poll()
{
if(stack2.isEmpty()&&stack1.isEmpty())
{
throw new RuntimeException("Queue is Empty!");
}
else if(stack2.isEmpty())
{
while(!stack1.isEmpty())
{
stack2.push(stack1.pop());
}
}
return stack2.pop();
}
//获得对列头的数据
public int peek()
{
if(stack2.empty()&&stack1.empty())
{
throw new RuntimeException("Queue is Empty!");
}
else if(stack2.isEmpty())
{
while(!stack1.isEmpty())
{
stack2.push(stack1.pop());
}
}
return stack2.peek();
}
public static void main(String []args)
{
TwoStackQueue queue=new TwoStackQueue();
queue.add(1);
queue.add(2);
queue.add(3);
queue.add(4);
System.out.println(queue.poll());
System.out.println(queue.poll());
System.out.println(queue.peek());
}
}
左神编写的代码如下:
import java.util.Stack;
public class Problem_02_TwoStacksImplementQueue {
public static class TwoStacksQueue {
public Stack<Integer> stackPush;
public Stack<Integer> stackPop;
public TwoStacksQueue() {
stackPush = new Stack<Integer>();
stackPop = new Stack<Integer>();
}
public void add(int pushInt) {
stackPush.push(pushInt);
}
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();
}
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();
}
}
public static void main(String[] args) {
TwoStacksQueue test = new TwoStacksQueue();
test.add(1);
test.add(2);
test.add(3);
System.out.println(test.peek());
System.out.println(test.poll());
System.out.println(test.peek());
System.out.println(test.poll());
System.out.println(test.peek());
System.out.println(test.poll());
}
}