package com.donaldy.basic.stack;
import com.donaldy.basic.queue.Queue;
public class StackWithTwoQueues {
Queue<Integer> queue = new Queue<>();
Queue<Integer> opQueue = new Queue<>();
int size = 0;
public void push(int data) {
this.queue.enQueue(data);
this.size ++;
}
public int pop() {
if (this.size <= 0 ) {
throw new IndexOutOfBoundsException("size : " + this.size);
}
int cnt = this.size;
int element;
while (!this.queue.isEmpty()) {
if (cnt == 1) {
break;
}
this.opQueue.enQueue(this.queue.deQueue());
cnt --;
}
int oldData = this.queue.deQueue();
while (!this.opQueue.isEmpty()) {
this.queue.enQueue(this.opQueue.deQueue());
}
this.size --;
return oldData;
}
}