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