package queue; import exceptions.EmptyQueueException; /** * Created with xgiovio.macbookair. * User: xgiovio * Date: 10/03/14 * Time: 15:49 */ public class ArrayQueue implements Queue { public ArrayQueue(){ queue = (E[])new Object[def_size]; } public ArrayQueue(int in_size){ queue = (E[])new Object[in_size]; } @Override public void enqueue(E element) { if (front == -1){ front++; } if ( rear == mod( front - 1,queue.length) ){ //reallocate; E[] new_queue = (E[]) new Object[queue.length * 2]; for (int i= 0 ;i<(queue.length -1); i++){ new_queue[i] = queue[(front + i) % queue.length]; } rear = queue.length - 1; front = 0; queue = new_queue; queue[rear]= element; rear = (rear + 1) % queue.length; } else { queue[rear]= element; rear = (rear + 1) % queue.length; } } @Override public E dequeue() throws EmptyQueueException { if (front == -1){ throw new EmptyQueueException(); }else{ E temp = queue[front]; front = (front + 1)%queue.length; if (front == rear){ front = -1; rear = 0; } return temp; } } @Override public E front() throws EmptyQueueException { if (front == -1){ throw new EmptyQueueException(); }else{ return queue[front]; } } @Override public boolean isEmpty() { if (size() == 0){ return true; }else{ return false; } } @Override public int size() { if (front == -1){ return 0; } if (front < rear){ return (rear - front); }else{ return (queue.length - (front - rear)); } } @Override public String toString() { String to_return = ""; to_return = to_return + "["; for (int i = 0;i