Strutture Dati: La Coda Prof. Francesco Accarino IIS Sesto San Giovanni Via Leopardi 132 La Coda La struttura di dati Coda rappresenta un insieme di elementi nel quale le operazioni di inserimento e cancellazione seguono una politica FIFO (First In First Out). Ciò significa che le operazioni di inserimento di nuovi elementi (detto push) avviene in coda e l’operazione di cancellazione di elementi (detta pop) avviene in testa. Appunti di Informatica Prof. Accarino 2 La coda in java utilizzando i vettori La gestione della coda non si discosta molto dalla gestione della pila, infatti avremo ancorauna classe che ha come attributi il vettore, l’indice testa e la numerosità n, con l’aggiunta dell’indice di coda Il costruttore si limita ad istanziare il vettore ricevendo la numerosità e ad inizializzare l’indice testa e l’indice di coda E i due metodi push e pop Coda tipo[ ] p Int testa Int coda Int n +Coda(int n) + push(tipo d):void +pop(void):tipo Appunti di Informatica Prof. Accarino 3 Operazione di Push A B C D E F 0 1 2 3 4 5 Testa 6 7 8 7 8 Fine A B C D E F G 0 1 2 3 4 5 6 Testa Fine A B C D E F G H I 0 1 2 3 4 5 6 7 8 Testa Coda Piena Fine Appunti di Informatica Prof. Accarino 4 Metodo Push Supponendo che la Pila abbia il vettore di nome c e sia di un certo tipo e dimensione n il metodo push sarebbe semplicemente: public void push(tipo s){ if(coda==n) JOptionPane.showMessageDialog(null, "La coda è piena"); else { c[coda]=s; coda++; } } Appunti di Informatica Prof. Accarino 5 Operazione di Pop Data una Coda A B C D E F 0 1 2 3 4 5 Testa 6 7 8 Fine Per Estrarre un elemento dalla coda A 0 B C D E F 1 2 3 4 5 Testa 6 7 8 Fine Appunti di Informatica Prof. Accarino 6 Operazione di Pop Spostare tutti gli elementi verso sinistra B C D E F 0 1 2 3 4 5 Testa 7 8 7 8 Fine B C D E F 0 1 2 3 4 Testa 6 5 6 Fine Appunti di Informatica Prof. Accarino Spostare fine a sinistra 7 Operazione di Pop B C D E F 0 1 2 3 4 Testa 5 6 7 8 6 7 8 Fine Fine 0 1 2 3 4 5 Coda Vuota Testa Appunti di Informatica Prof. Accarino 8 Metodo Pop Supponendo che la Pila abbia il vettore di nome c e sia di un certo tipo e dimensione n il metodo pop sarebbe: public tipo pop(){ tipo l=""; int i; if(testa==coda) JOptionPane.showMessageDialog(null, "La coda è vuota"); else{ l=p[testa]; for(i=1;i<dim;i++) p[i-1]=p[i]; coda--; } return l; } Appunti di Informatica Prof. Accarino 9