package com.sprint.datastructure; import java.util.EmptyStackException; public class StackWithTwoQueues { Queue queue1; Queue queue2; public StackWithTwoQueues() { queue1 = new Queue(); queue2 = new Queue(); } public void push(int data) { queue1.enQueue(data); } public int pop() { if (queue1.isEmpty()) { throw new EmptyStackException(); } int top = getTop(); return top; } private int getTop() { int length = queue1.size() - 1; //小bug:queue.size() for (int i = 0; i < length; i++) { queue2.enQueue(queue1.deQueue()); } int top = (int)queue1.deQueue(); queue2ToQueue1(); return top; } private void queue2ToQueue1() { while (!queue2.isEmpty()) { queue1.enQueue(queue2.deQueue()); } } }