java中的队列LinkedList是动态数组实现的,这里利用两个队列来实现栈
public class MyStack { private Queue<Integer> data; private Queue<Integer> help; public MyStack() { data = new LinkedList<Integer>(); help = new LinkedList<Integer>(); } public void push(int pushInt) { data.add(pushInt); } public int peek() { if (data.isEmpty()) { throw new RuntimeException("Stack is empty!"); } while (data.size() != 1) { help.add(data.poll()); } int res = data.poll(); // 与poll相比,重新追加到队尾中去 help.add(res); swap(); return res; } public int pop() { if (data.isEmpty()) { throw new RuntimeException("Stack is empty!"); } while (data.size() > 1) { help.add(data.poll()); } int res = data.poll(); swap(); return res; } private void swap() { Queue<Integer> tmp = help; help = data; data = tmp; } }