package com.coding.basic.stack;
import com.coding.basic.Queue;
public class StackWithTwoQueues {
Queue<Integer> queue1=new Queue<>();
Queue<Integer> queue2=new Queue<>();
public void push(int data) {
if (queue1.isEmpty()&&queue2.isEmpty()) {
queue1.enQueue(data);
}
else if (queue1.isEmpty()&&!queue2.isEmpty()) {
queue2.enQueue(data);
}
else if (!queue1.isEmpty()&&queue2.isEmpty()) {
queue1.enQueue(data);
}
}
public int pop() {
if (queue1.isEmpty()&&queue2.isEmpty()) {
throw(new RuntimeException());
}
else if (queue1.isEmpty()&&!queue2.isEmpty()) {
for (int i = 0; i < queue2.size()-1; i++) {
queue1.enQueue((int)queue2.deQueue());
}
return (int) queue2.deQueue();
}
else if (!queue1.isEmpty()&&queue2.isEmpty()) {
for (int i = 0; i < queue1.size()-1; i++) {
queue2.enQueue((int)queue1.deQueue());
}
return (int) queue1.deQueue();
}
return 0;
}
}