package stack; import queue.Queue; public class StackWithTwoQueues<E> { private Queue<Integer> q1 = new Queue<Integer>() ; private Queue<Integer> q2 = new Queue<Integer>() ; public boolean isEmpty() { return size() == 0; } public int size() { return q1.size() + q2.size(); } public void push(int data) { q1.enQueue(data); } public int pop() { if (size() <= 0) { throw new RuntimeException("stack is empty"); } if (q1.size() >= 1) { while (q1.size() > 1) { q2.enQueue(q1.deQueue()); } return q1.deQueue(); } else { while (q2.size() > 1) { q1.enQueue(q2.deQueue()); } return q2.deQueue(); } } }