package week09.stack; import week08.queue.Queue; public class StackWithTwoQueues<T> { private Queue<T> queue1 = new Queue<T>(); private Queue<T> queue2 = new Queue<T>(); public boolean isEmpty() { return queue1.isEmpty(); } public int size() { return queue1.size(); } public void push(T data) { queue1.enQueue(data); } public T pop() { if (queue1.isEmpty()) { throw new RuntimeException("the stack is empty."); } int queue1Size = queue1.size(); for (int i = 0; i < queue1Size - 1; i++) { queue2.enQueue(queue1.deQueue()); } T popValue = queue1.deQueue(); while (!queue2.isEmpty()) { queue1.enQueue(queue2.deQueue()); } return popValue; } }