package com.github.ipk2015.coding2017.basic.stack;
import com.github.ipk2015.coding2017.basic.queue.Queue;
public class StackWithTwoQueues {
private Queue queue1 = new Queue();
private Queue queue2 = new Queue();
public void push(Object data) {
queue1.enQueue(data);
}
public Object pop() {
if(queue1.size() == 1){
return queue1.deQueue();
}
if(queue2.isEmpty()){
moveElements(queue1,queue2);
}
return queue2.deQueue();
}
private void moveElements(Queue oirQueue,Queue aimQueue){
if(oirQueue.isEmpty()){
return;
}else{
Object element = oirQueue.deQueue();
moveElements(oirQueue,aimQueue);
aimQueue.enQueue(element);
}
}
public boolean isEmpty(){
return queue1.isEmpty() && queue2.isEmpty();
}
public int size(){
return queue1.size()+queue2.size();
}
}