package com.interview.basics.model.collection.queue;
import com.interview.basics.model.collection.list.ArrayList;
/**
* Created with IntelliJ IDEA.
* User: stefanie
* Date: 7/14/14
* Time: 10:43 AM
*/
public class ArrayQueue<T> extends FixCapabilityArrayQueue<T> {
public ArrayQueue(int n){
super(n);
}
public ArrayQueue(){
super();
}
@Override
public void push(T item) {
if(size >= N) {
expand();
}
super.push(item);
}
@Override
public T pop() {
T element = super.pop();
if(size < N/4) {
shrink();
}
return element;
}
private void expand(){
N = 2 * N;
copy();
}
private void shrink(){
N = N / 2;
copy();
}
private void copy(){
T[] newArray = (T[]) new Object[N];
for(int i = 0; i < size; i++){
newArray[i] = this.array[(head+i)%N];
}
this.array = newArray;
head = 0;
tail = size -1;
}
}