/** * FixedArrayQueue * realizza il tipo di dati astratto Coda con un array a dimensione fissa e * due indice * @author M. Dalpasso modificata da A. Luchetta * @version 20-Nov-2006 * @see Queue * @see EmptyQueueException * @see FullQueueException */ public class FixedArrayQueue implements Queue { static final int CAPACITY = 100; protected Object[] v; protected int front; // indice del primo elemento della coda protected int back; // indice successivo all'ultimo elemento della coda public FixedArrayQueue() { makeEmpty(); } /** rende vuoto il contenitore */ public void makeEmpty() { v = new Object[CAPACITY]; front = back = 0; } /** verifica se il contenitore e’ vuoto @return true se il contenitore e' vuoto, false altrimenti */ public boolean isEmpty() { return (back == front); } /** calcola il numero di elementi nel contenitore @return il numero di elementi nel contenitore */ public int size() { return back - front; } /** inserisce un elemento all’ultimo posto della coda O(1) @param obj l’elemento da inserire @throws FullQueueException */ public void enqueue(Object obj) throws FullQueueException { if (back >= v.length) throw new FullQueueException(); v[back++] = obj; } /** ispeziona l'elemento al primo posto della coda O(1) @return l’elemento al primo posto della coda @throws EmptyQueueException se la coda e’ vuota */ public Object getFront() throws EmptyQueueException { if (isEmpty()) throw new EmptyQueueException(); return v[front]; } /** rimuove l’elemento al primo posto della coda O(1) @return l’elemento rimosso @throws EmptyQueueException se la coda e’ vuota */ public Object dequeue() throws EmptyQueueException { Object obj = getFront(); v[front] = null; //garbage collector front++; return obj; } }