class MyStack { private Queue queue1 = new LinkedList(); private Queue queue2 = new LinkedList(); // Push element x onto stack. public void push(int x) { Queue notEmptyQueue = null; if (queue1.isEmpty()) { notEmptyQueue = queue2; } else { notEmptyQueue = queue1; } notEmptyQueue.offer(x); } // Removes the element on top of the stack. public void pop() { Queue emptyQueue = null; Queue notEmptyQueue = null; if (queue1.isEmpty()) { emptyQueue = queue1; notEmptyQueue = queue2; } else { emptyQueue = queue2; notEmptyQueue = queue1; } while (notEmptyQueue.size() > 1) { emptyQueue.offer(notEmptyQueue.poll()); } notEmptyQueue.poll(); } // Get the top element. public int top() { Queue emptyQueue = null; Queue notEmptyQueue = null; if (queue1.isEmpty()) { emptyQueue = queue1; notEmptyQueue = queue2; } else { emptyQueue = queue2; notEmptyQueue = queue1; } while (notEmptyQueue.size() > 1) { emptyQueue.offer(notEmptyQueue.poll()); } int result = notEmptyQueue.poll(); emptyQueue.offer(result); return result; } // Return whether the stack is empty. public boolean empty() { return queue1.isEmpty() && queue2.isEmpty(); } }