package com.interview.algorithms.stackqueue;
import com.interview.basics.model.collection.queue.Queue;
import com.interview.basics.model.collection.stack.LinkedStack;
import com.interview.basics.model.collection.stack.Stack;
/**
* Created with IntelliJ IDEA.
* User: stefanie
* Date: 7/14/14
* Time: 4:35 PM
*/
public class C7_2_QueueByStack<T> implements Queue<T> {
Stack<T> base = new LinkedStack<T>();
Stack<T> backup = new LinkedStack<T>();
@Override
public void push(T item) {
base.push(item);
}
@Override
public T pop() {
copy();
return backup.pop();
}
@Override
public T peek() {
copy();
return backup.peek();
}
@Override
public boolean isEmpty() {
return base.isEmpty() && backup.isEmpty();
}
@Override
public int size() {
return base.size() + backup.size();
}
private void copy(){
if(backup.size() == 0)
while(!base.isEmpty()) backup.push(base.pop());
}
}