Università degli studi di Bergamo Informatica II Programmazione Object Oriented Esercitazioni Esercitazione 8 Dott. Marco Guarnieri Dott. Eros Magri 31.05.12 Strutture Dati Le principali strutture dati sono: ● ● ● Stack ● Push: aggiunge in testa ● Pop: rimuove in testa Queue ● Add: aggiunge in coda ● Remove: rimuove in testa Tree 2 Strutture Dati ● Stack può essere realizzata semplicemente tenendo un puntatore alla testa, ovvero all'ultimo elemento inserito. Ovviamente quando si implementa una pila la si implementa di tipo generico. 3 Strutture Dati ● Queue bisogna implementarla come coda generica, la cosa importante che la differenzia dalla pila è il fatto che per comodità necessita di due puntatori, uno al primo elemento ed uno all'ultimo. 4 Strutture Dati ● Liste Ordinate Rispetto alla precedente l'unica differenza la si trova nel metodo di inserimento nella lista che richiede di scorrerla per trovare l'esatta posizione in cui inserire l'elemento. Proprio per questa ragione si ha un'efficienza leggermente più elevata. 5 Strutture Dati ● Liste Ordinate La classe deve essere generica e tutte le dichiarazioni dovranno far riferimento ad un tipo di oggetto che estende l'interfaccia Comparable, appunto perché deve essere possibile effettuare l'ordinamento. <E extends Comparable<? Super E>> 6 Strutture Dati ● Tree Gli alberi di ricerca in Java sono una struttura leggermente più complessa rispetto alle precedenti. Rispetto alle precedenti i nodi dell'albero devono avere due puntatori (sx e dx). Un'altra particolarità la si trova nella funzione di inserimento e ricerca sono ricorsive. L'inserimento va fatto rispettando l'ordiamento. 7 Esercizio - 15 ● ● Scrivere un metodo statico che prende come parametro un array di String e lo ordina usando l'algoritmo di Bubble Sort. Effettuare poi sull'array ordinato una Ricerca Dicotomica utilizzando un metodo statico. Ricordare che il metodo deve riportare: … <T extends Comparable <? super T>> ... 8 Esercizio - 16 ● ● Implementare la struttura ad Albero di Ricerca con i metodi di inserimento e ricerca e testare poi se funziona creando un albero di String. Implementare la ListaOrdinata e testarla creando una lista di Integer. 9