解题思路

首先将N个元素入第一个队列,然后弹出N-个元素到第二个队列,然后输出第一个队列的最后一个元素,如此往复循环

package lesson01;

import java.util.LinkedList;
import java.util.Queue;

public class Code03_TwoQueueStack {

Queue<Integer> queue;
Queue<Integer> help;

public Code03_TwoQueueStack() {
queue = new LinkedList<Integer>();
help = new LinkedList<Integer>();
}

public void push(int item) {
queue.add(item);
}

public int pop() throws Exception {
if (queue.isEmpty()) {
throw new Exception("stack is null!");
}
while (queue.size() > 1) {
help.add(queue.poll());
}
int res = queue.poll();
swap();
return res;
}

public int peek() throws Exception {
if (queue.isEmpty()) {
throw new Exception("stack is null!");
}
while (queue.size() > 1) {
help.add(queue.poll());
}
int res = queue.poll();
help.add(res);
swap();
return res;
}

private void swap() {
Queue<Integer> temp;
temp = help;
help = queue;
queue = temp;
}

public static void main(String[] args) throws Exception {
Code03_TwoQueueStack stack = new Code03_TwoQueueStack();
for (int i = 0; i < 7; i++) {
stack.push(i);
}

for (int i = 0; i < 7; i++) {
System.out.print(" " + stack.peek());
stack.pop();
}
}

}