# LeetCode – Implement Stack using Queues (Java)

Implement the following operations of a stack using queues.
push(x) -- Push element x onto stack.
pop() -- Removes the element on top of the stack.
top() -- Get the top element.
empty() -- Return whether the stack is empty.

Note: only standard queue operations are allowed, i.e., poll(), offer(), peek(), size() and isEmpty() in Java.

Analysis

This problem can be solved by using two queues.

Java Solution

```class MyStack { LinkedList<Integer> queue1 = new LinkedList<Integer>(); LinkedList<Integer> queue2 = new LinkedList<Integer>();   // Push element x onto stack. public void push(int x) { if(empty()){ queue1.offer(x); }else{ if(queue1.size()>0){ queue2.offer(x); int size = queue1.size(); while(size>0){ queue2.offer(queue1.poll()); size--; } }else if(queue2.size()>0){ queue1.offer(x); int size = queue2.size(); while(size>0){ queue1.offer(queue2.poll()); size--; } } } }   // Removes the element on top of the stack. public void pop() { if(queue1.size()>0){ queue1.poll(); }else if(queue2.size()>0){ queue2.poll(); } }   // Get the top element. public int top() { if(queue1.size()>0){ return queue1.peek(); }else if(queue2.size()>0){ return queue2.peek(); } return 0; }   // Return whether the stack is empty. public boolean empty() { return queue1.isEmpty() & queue2.isEmpty(); } }```
Category >> Algorithms >> Interview
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
```<pre><code>
String foo = "bar";
</code></pre>
```
• Sandeep

Wouldn’t this be a simpler version of push()?
public void push(int x) {

if(q1.isEmpty()) {
q1.offer(x);
while (!q2.isEmpty()){
q1.offer(q2.poll());
}
return;
}

if(q2.isEmpty()) {
q2.offer(x);

while (!q1.isEmpty()){
q2.offer(q1.poll());
}
}
}