Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data...

15
Tipi di dato Tipi di dato astratti astratti Lista, Pila, Coda, Albero

Transcript of Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data...

Page 1: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Tipi di dato Tipi di dato astrattiastrattiLista, Pila, Coda, Albero

Page 2: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

ADTADT• Un tipo di dato astratto o ADT (Abstract Data Type) è

un tipo di dato le cui istanze possono essere manipolate con modalità che dipendono esclusivamente dalla semantica del dato e non dalla sua implementazione.

• Nei linguaggi di programmazione che consentono la programmazione per tipi di dati astratti, un tipo di dati viene definito distinguendo nettamente la sua interfaccia, ovvero le operazioni che vengono fornite per la manipolazione del dato, e la sua implementazione interna, ovvero il modo in cui le informazioni di stato sono conservate e in cui le operazioni manipolano tali informazioni al fine di esibire, all'interfaccia, il comportamento desiderato.

Wikipedia

Page 3: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

in parole povere …in parole povere …• Non interessa l’implementazione ma le operazioni

che è possibile effettuare.

Page 4: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Strutture dati Strutture dati linearilineariLista Pila Coda

Page 5: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Strutture datiStrutture dati• Per gestire un insieme dinamico di elementi

occorre implementarlo mediante una struttura dati.

• Una struttura dati è composta da nodi, ciascuno dei quali contiene un elemento dell’insieme ed eventuali altre informazioni (puntatori) che servono per la gestione della struttura.

Page 6: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Struttura fisica dei Struttura fisica dei datidati

• Per implementare le strutture dati, si devono utilizzare le strutture fisiche fornite dai linguaggi che possono avere dimensione statica o dinamica.

• Un array, per esempio, è una struttura di memorizzazione dalla dimensione statica.

• Strutture fisiche dalla dimensione dinamica si possono implementare grazie all’uso dei puntatori.

Page 7: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Strutture dati lineariStrutture dati lineari• Una struttura dati si dice lineare se i suoi

elementi sono organizzati in modo sequenziale, ovvero se logicamente gli stessi sono posizionati uno dopo l’altro.o Pilao Codao Lista

Page 8: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Pila (Pila (stack)stack)• La pila è una struttura dati di tipo LIFO che

garantisce che l’ultimo elemento depositato nella pila sia il primo a essere servito.

• LIFO (Last-In First-Out, “l’ultimo arrivato è il primo ad essere servito”)

• Esempio pila di piatti, pila di libri, di monete

Page 9: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Operazioni sulla pilaOperazioni sulla pila• push

o consente di inserire un nuovo elemento in testa alla pila

• popo permette di estrarre il primo elemento in cima

alla pila• top

o consente di leggere il primo elemento in cima alla pila senza estrarlo da essa

• vuotao restituisce true se la pila è vuota, false in caso

contrario

Page 10: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

CodaCoda• La coda è una struttura dati di

tipo FIFO che garantisce che il primo elemento inserito sia il primo a essere servito.

• FIFO (First-In First-Out), il primo elemento a entrare è anche il primo a uscire

Page 11: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Operazioni sulla codaOperazioni sulla coda• Le tipiche operazioni che si possono effettuare su

una coda sono le seguenti:o enqueue (accodare)

consente di accodare un elemento alla codao dequeue (togliere dalla coda)

consente invece di eliminare l’elemento che da più tempo è presente nella coda

Page 12: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Lista concatenataLista concatenata• La lista concatenata è una collezione ordinata di

elementi, ciascuno dei quali è concatenato al successivo mediante un riferimento che indica dove andare a prendere il successivo elemento.

• In una lista concatenata non è possibile accedere in modo diretto a un elemento, bensì è necessario scorrere tutti gli elementi fino a raggiungere quello cercato.

• Ogni elemento della lista è contenuto in un nodo, in cui è presente anche un puntatore all’elemento successivo.

• L’ultimo elemento della lista avrà il puntatore nullo, mentre il puntatore al primo nodo si conserva in una variabile opportuna.

Page 13: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Operazioni sulla listaOperazioni sulla lista• Le operazioni principali che si possono

effettuare su una lista sono:o inserimentoo ricercao cancellazione

• Esempio di cancellazione:

Page 14: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Implementazione JavaImplementazione Javaclass Nodo {

public Object info;

public Nodo succ;

public Nodo(){

info=null;

succ=null;

}

public Nodo(Object x){

info=x;

succ=null;

}

public Nodo(Object x,Nodo s){

info = x;

succ = s;

}

}

Page 15: Tipi di dato astratti Lista, Pila, Coda, Albero. ADT Un tipo di dato astratto o ADT (Abstract Data Type) è un tipo di dato le cui istanze possono essere.

Lista in JavaLista in Javaclass Lista{

public Nodo testa;

public Lista(){

testa = null;

}

public void inseriscitesta(Object x){…}

public void inseriscicoda(Object x){…}

public Object eliminatesta(){…}

public Object eliminacoda() {…}

public void stampa() {…}

public boolean vuota() {…}

}