用两个栈实现队列
题目描述:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
解题思路:in 栈用来处理入栈(push)操作,out 栈用来处理出栈(pop)操作。一个元素进入 in 栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入 out 栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,此时先进入的元素先退出,这就是队列的顺序。
package jianzhi;
import java.util.Iterator;
import java.util.Stack;
public class TwoStackQ {
Stack<Integer> In = new Stack<Integer>();
Stack<Integer> Out = new Stack<Integer>();
/*
* 入队列
*/
public void push(int node) {
In.push(node);
}
/*
* 出队列
*/
public int pop() throws Exception {
if (Out.isEmpty()) {
while (!In.isEmpty()) {
Out.push(In.pop());
}
}
if (Out.isEmpty()) {
throw new Exception("queue is empty");
}
return Out.pop();
}
}