用两个stack设计一个队列
思路:用两个栈,一个用于接收(in),一个用于输出(out),输出前如果out为空需要将in中的数据导入out。
import java.util.Stack; //用两个stack设计一个队列 p142 public class MyQueue<T> { Stack<T> in; Stack<T> out; public MyQueue() { in = new Stack<T>(); out = new Stack<T>(); } public void enqueue(T a) { in.push(a); } public T dequeue() { shiftItems(); return out.pop(); } public T peek() { shiftItems(); return out.peek(); } private void shiftItems() { if (!out.isEmpty()) return; while (!in.isEmpty()) { out.push(in.pop()); } } public static void main(String[] args) { MyQueue<Integer> queue = new MyQueue<Integer>(); queue.enqueue(1); queue.enqueue(2); queue.enqueue(3); System.out.println(queue.dequeue()); queue.enqueue(4); System.out.println(queue.dequeue()); System.out.println(queue.dequeue()); System.out.println(queue.dequeue()); } }