描述:用两个栈实现一个队列。队列的声明如下,请实现他的两个函数 enqueue() 和 dequeue.
思路:由于栈先进后出,队列先进先出的性质,一段数据先进入A栈,之后出A栈进B栈,再从B栈弹出的顺序就是先进先出
enqueue时(直接用java集合不用判断满不满)
dequeue时,判断B栈如果空,则把A栈所有数据入B栈。 如果A栈空,则队空
public Stack<Integer> A = new Stack<>();
public Stack<Integer> B = new Stack<>();
public void enqueuq(int val) {
A.push(val);
}
public int dequeue() throws Exception {
if (B.isEmpty()) {
if (A.isEmpty()) {
throw new Exception("queue empty!");
}
while (!A.isEmpty()) {
B.push(A.pop());
}
}
return B.pop();
}