Strutture dati

1,011 views

Published on

  • Be the first to comment

  • Be the first to like this

Strutture dati

  1. 1. Strutture datiArianna GuidolinStruttureArrayListe Pile Code Strutture datiAlberi J. Glenn Brookshear, Computer Science: An OverviewOrganizzazionenella memoria Capitolo 8: Data AbstractionsPuntatoriStrutture statichee dinamicheMemorizzazione Arianna Guidolindelle struttureArrayListe Universit` degli Studi di Trento a Pile e codeAlberi binariCreazione di tipidi dati 4 maggio 2012Arianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 1 / 35
  2. 2. Strutture datiArianna GuidolinStruttureArrayListe Pile Array CodeAlberiOrganizzazionenella memoria Si chiamano array le strutture di dati organizzate come vettori oPuntatori matrici.Strutture statichee dinamicheMemorizzazionedelle struttureArray Array che contengono dati dello stesso tipo si dicono omogenei,Liste mentre array che contengono dati di diverso tipo si dicono eterogenei Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 1 / 35
  3. 3. Strutture datiArianna GuidolinStrutture ListeArrayListe Pile Code Una lista ` una collezione di dati organizzati sequenzialmente eAlberiOrganizzazione L’inizio di una lista si chiama testa, la fine codanella memoriaPuntatori Le operazioni che si possono fare su una lista sono:Strutture statichee dinamiche rimuovere elementiMemorizzazionedelle strutture aggiungere elementiArrayListe controllare quali elementi sono presenti Pile e codeAlberi binari cambiare l’ordine degli elementiCreazione di tipidi dati cercare un determinato elementoArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 2 / 35
  4. 4. Strutture datiArianna GuidolinStruttureArrayListe Pile Code Esempi di listeAlberiOrganizzazione Mario ← testanella memoriaPuntatori GiovanniStrutture statichee dinamiche FrancescaMemorizzazionedelle strutture Lucia ← codaArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 3 / 35
  5. 5. Strutture datiArianna GuidolinStruttureArrayListe Esempi di liste Pile CodeAlberi De Nicola ←coda PertiniOrganizzazionenella memoria Einaudi CossigaPuntatori GronchiStrutture statichee dinamiche Scalfaro SegniMemorizzazionedelle strutture CiampiArray SaragatListe Napolitano ←testa Pile e codeAlberi binari LeoneCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 4 / 35
  6. 6. Strutture datiArianna GuidolinStruttureArrayListe Pile Possiamo imporre delle restrizioni sui modi in cui gli elementi Code vengono aggiunti o eliminati da una listaAlberiOrganizzazionenella memoriaPuntatoriStrutture statiche Una pila (stack) ` una lista in cui i vari elementi possono essere ee dinamiche inseriti o rimossi solo dalla testaMemorizzazionedelle struttureArray Otteniamo un modello di struttura LIFO (Last In, First Out):Liste Pile e code l’ultimo elemento inserito nella lista sar` il primo ad essere tolto aAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 5 / 35
  7. 7. Strutture datiArianna GuidolinStruttureArray EsempioListe Pile CodeAlberiOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi dati pila di libriArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 6 / 35
  8. 8. Strutture datiArianna GuidolinStruttureArrayListe Pile Code Una coda (queue) ` una lista in cui i termini possono essere inseriti eAlberi solo in coda e rimossi solo dalla testaOrganizzazionenella memoriaPuntatoriStrutture statichee dinamiche Una coda ha una struttura di tipo FIFO (First In, First Out): ilMemorizzazione primo elemento ad essere inserito corrisponde al primo elemento chedelle struttureArray verr` tolto aListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 7 / 35
  9. 9. Strutture datiArianna GuidolinStruttureArray EsempioListe Pile CodeAlberiOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi dati fila di bambiniArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 8 / 35
  10. 10. Strutture datiArianna Guidolin AlberiStruttureArrayListe Pile Un albero ` una collezione di elementi organizzati in modo gerarchico e CodeAlberiOrganizzazionenella memoria radicePuntatoriStrutture statichee dinamicheMemorizzazione nodo nododelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi dati foglia foglia foglia fogliaArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 9 / 35
  11. 11. Strutture datiArianna Guidolin EsempioStruttureArrayListe Pile CodeAlberiOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi dati NASA Astrobiology InstituteArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 10 / 35
  12. 12. Strutture datiArianna GuidolinStruttureArrayListe Nella memoria principale del computer i dati sono organizzati come Pile Code successione di celle di memoriaAlberiOrganizzazionenella memoria L’organizzazione secondo le strutture di alberi, liste o array riguardaPuntatori gli utenti ed ` solo simulata all’interno di un computer in modi diversi eStrutture statiche a seconda della struttura voluta:e dinamicheMemorizzazione gli utenti non vedono come i dati sono organizzati nella memoriadelle struttureArray l’accesso ai dati avviene come se fossero organizzati secondo laListe Pile e code struttura desiderataAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 11 / 35
  13. 13. Strutture datiArianna GuidolinStruttureArray Ogni cella di memoria ` identificata da un indirizzo, che ` un valore e eListe Pile numerico CodeAlberi Anche l’indirizzo di una cella viene memorizzato in una cella diOrganizzazionenella memoria memoria, chiamata puntatorePuntatoriStrutture statiche Ogni elemento di una struttura ` memorizzato in una cella, e quindi il ee dinamiche puntatore di un determinato elemento contiene l’indirizzo della cellaMemorizzazionedelle strutture in cui questo elemento ` memorizzato eArrayListe Le strutture elencate corrispondono quindi a determinati modi di Pile e codeAlberi binari organizzare le celle di memoria e i puntatoriCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 12 / 35
  14. 14. Strutture datiArianna GuidolinStrutture Le strutture in cui sono organizzati i dati possono essere di tipoArrayListe statico oppure dinamico. Pile CodeAlberi Una struttura statica ` utile quando si deve accedere ai dati per eOrganizzazione leggerli o cambiare i loro valori, ma la dimensione o la configurazionenella memoria della struttura non cambiano nel tempo. Nel momento della creazionePuntatoriStrutture statiche della struttura si riserva lo spazio necessario per contenere i suoi datie dinamicheMemorizzazione Se invece c’` bisogno di aggiungere o rimuovere elementi, o edelle strutture modificare la struttura, si usa un tipo di struttura dinamica. InArrayListe questo caso si deve considerare il fatto che la struttura pu` crescere e o Pile e codeAlberi binari quindi potrebbe essere necessario spostare i dati in una parte diCreazione di tipidi dati memoria in cui c’` pi` spazio disponibile e uArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 13 / 35
  15. 15. Strutture datiArianna GuidolinStruttureArrayListe Pile Array omogenei 1-dimensionali CodeAlberiOrganizzazionenella memoria Identifichiamo i dati nell’array grazie alla loro posizionePuntatori I dati vengono memorizzati in una successione di celle di memoriaStrutture statichee dinamiche con indirizzi consecutiviMemorizzazionedelle strutture Se x ` l’indirizzo della prima cella di memoria, allora l’indirizzo della eArrayListe j-esima cella di memoria ` x + (j − 1) e Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 14 / 35
  16. 16. Strutture datiArianna Guidolin Array omogenei 2-dimensionaliStruttureArrayListe Si memorizzano i dati riga per riga oppure colonna per colonna. Nella Pile Code rappresentazione per riga, se x ` l’indirizzo della prima cella di eAlberi memoria e il numero di colonne ` c, l’indirizzo dell’elemento che sta eOrganizzazionenella memoria nella i-esima riga e j-esima colonna `ePuntatoriStrutture statiche x + c(i − 1) + (j − 1)e dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 15 / 35
  17. 17. Strutture datiArianna GuidolinStruttureArrayListe Pile Array eterogenei CodeAlberiOrganizzazionenella memoria Se il numero di celle richieste per ogni componente dell’array ` fisso, ePuntatori possiamo memorizzarlo in un blocco di celle consecutive come nelStrutture statiche caso di array omogeneie dinamicheMemorizzazione Se ad esempio abbiamo tre componenti che richiedonodelle struttureArray rispettivamente n, m, l celle di memoria e x ` l’indirizzo della prima eListe Pile e code cella, l’indirizzo della prima cella della seconda componente ` x + n eAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 16 / 35
  18. 18. Strutture datiArianna GuidolinStruttureArray Nel caso di array dinamici, ogni componente viene memorizzata inListe Pile una porzione di memoria separata CodeAlberi Le varie componenti sono poi collegate utilizzando puntatoriOrganizzazionenella memoria Ad esempio se si deve memorizzare un array eterogeneo formato daPuntatori tre componenti, in memoria bisogna anche riservare uno spazio per iStrutture statichee dinamiche puntatori. Se il blocco di memoria in cui questi sono memorizzati haMemorizzazionedelle strutture indirizzo x, possiamo trovare la prima componente dell’arrayArray guardando a cosa punta il puntatore con indirizzo x, e per accedereListe Pile e code alla componente successiva dell’array bisogna riferirsi a quantoAlberi binari riportato nel puntatore che ha indirizzo x + 1Creazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 17 / 35
  19. 19. Strutture datiArianna GuidolinStruttureArray ListeListe Pile CodeAlberi Possono essere memorizzate in un unico blocco di celle di memoriaOrganizzazione con indirizzi consecutivi: se assumiamo che ogni elemento della listanella memoria non sia pi` lungo di n caratteri, possiamo dividere il blocco di celle in uPuntatori sotto-blocchi, ognuno contenente n celleStrutture statichee dinamicheMemorizzazione Questo metodo va bene nel caso di liste statiche, in cui compare undelle strutture numero fisso di elementi. Rimuovere un elemento provocherebbeArrayListe infatti la creazione di un buco nella lista, mentre aggiungere un Pile e codeAlberi binari elemento richiederebbe di spostare la lista in una porzione di memoriaCreazione di tipi in grado di contenerla tuttadi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 18 / 35
  20. 20. Strutture datiArianna GuidolinStruttureArrayListe Pile Per le liste dinamiche bisogna agire diversamente: CodeAlberi ogni elemento della lista viene memorizzato in un’area dellaOrganizzazionenella memoria memoriaPuntatori le varie celle di memoria vengono collegate tramite puntatoriStrutture statichee dinamiche Se ogni elemento della lista ` formato da n caratteri, lo spazio eMemorizzazionedelle strutture richiesto per memorizzali consiste in n + 1 celle di memoria: n celleArrayListe per l’elemento e una cella per il puntatore dell’elemento successivo Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 19 / 35
  21. 21. Strutture datiArianna GuidolinStrutture Ogni lista ha una testa e una coda: un puntatore particolare indica laArrayListe cella di memoria che contiene l’elemento in testa alla lista, mentre Pile Code all’ultimo elemento si associa un puntatore NULL, che indica che nonAlberi ci sono termini successivi nella lista.Organizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 20 / 35
  22. 22. Strutture datiArianna GuidolinStrutture Ogni lista ha una testa e una coda: un puntatore particolare indica laArrayListe cella di memoria che contiene l’elemento in testa alla lista, mentre Pile Code all’ultimo elemento si associa un puntatore NULL, che indica che nonAlberi ci sono termini successivi nella lista.Organizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 20 / 35
  23. 23. Strutture datiArianna GuidolinStrutture In questo modo le operazioni di inserimento ed eliminazione diArrayListe elementi si fanno unicamente con i puntatori Pile CodeAlberi Per rimuovere un elemento basta modificare il puntatore precedente,Organizzazione facendogli indicare l’elemento successivo a quello che si vuolenella memoria eliminarePuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 21 / 35
  24. 24. Strutture datiArianna GuidolinStrutture In questo modo le operazioni di inserimento ed eliminazione diArrayListe elementi si fanno unicamente con i puntatori Pile CodeAlberi Per rimuovere un elemento basta modificare il puntatore precedente,Organizzazione facendogli indicare l’elemento successivo a quello che si vuolenella memoria eliminarePuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 21 / 35
  25. 25. Strutture datiArianna GuidolinStrutture In questo modo le operazioni di inserimento ed eliminazione diArrayListe elementi si fanno unicamente con i puntatori Pile CodeAlberi Per rimuovere un elemento basta modificare il puntatore precedente,Organizzazione facendogli indicare l’elemento successivo a quello che si vuolenella memoria eliminarePuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 21 / 35
  26. 26. Strutture datiArianna GuidolinStruttureArrayListe Per aggiungere un elemento, dopo aver trovato lo spazio di memoria Pile Code adatto per contenerlo, bisogna modificare due puntatori: quelloAlberi dell’elemento precedente e quello del nuovo elementoOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 22 / 35
  27. 27. Strutture datiArianna GuidolinStruttureArrayListe Per aggiungere un elemento, dopo aver trovato lo spazio di memoria Pile Code adatto per contenerlo, bisogna modificare due puntatori: quelloAlberi dell’elemento precedente e quello del nuovo elementoOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 22 / 35
  28. 28. Strutture datiArianna GuidolinStruttureArrayListe Per aggiungere un elemento, dopo aver trovato lo spazio di memoria Pile Code adatto per contenerlo, bisogna modificare due puntatori: quelloAlberi dell’elemento precedente e quello del nuovo elementoOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 22 / 35
  29. 29. Strutture datiArianna GuidolinStruttureArrayListe Pile Pile CodeAlberiOrganizzazione Una delle estremit` del blocco di memoria in cui memorizzare la pila anella memoria viene utilizzata come base (cella in cui viene memorizzato il primoPuntatori elemento). Gli elementi da inserire vengono posti successivamenteStrutture statichee dinamiche andando in direzione dell’altra estremit`aMemorizzazionedelle strutture Quello che cambia quando si aggiungono o rimuovono elementi daArrayListe una pila ` la posizione della testa: un puntatore contiene quindi e Pile e codeAlberi binari l’indirizzo della testa della pilaCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 23 / 35
  30. 30. Strutture datiArianna Guidolin Per aggiungere un elemento, il puntatore viene modificato ad indicareStruttureArray la posizione immediatamente oltre la testa e quindi in questaListe posizione si va ad inserire il nuovo elemento Pile CodeAlberi Per eliminare un elemento basta modificare il puntatore in modo cheOrganizzazionenella memoria punti all’elemento precedentePuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 24 / 35
  31. 31. Strutture datiArianna Guidolin CodeStruttureArrayListe Poich´ gli elementi vengono inseriti dal fondo e tolti dalla testa, e Pile servono due puntatori alle due estremit`a CodeAlberiOrganizzazione Quando la coda ` vuota, entrambi i puntatori indicano la stessa enella memoria posizionePuntatoriStrutture statiche Per inserire un elemento, si cambia la posizione del puntatore allae dinamiche codaMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 25 / 35
  32. 32. Strutture datiArianna GuidolinStruttureArray Quando si elimina un elemento, quello che cambia ` il puntatore alla eListe testa Pile CodeAlberiOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binari Con le operazioni di aggiunta ed eliminazione dei termini, la codaCreazione di tipi “scorre”nella memoriadi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 26 / 35
  33. 33. Strutture datiArianna Guidolin Per mantenere sempre i termini all’interno dello stesso blocco diStrutture memoria, quando il puntatore alla coda arriva ad indicare l’estremit` aArrayListe del blocco di memoria, i nuovi termini da aggiungere vengono posti Pile all’altra estremit`. Otteniamo una struttura circolare a CodeAlberiOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 27 / 35
  34. 34. Strutture datiArianna GuidolinStruttureArray Alberi binariListe Pile CodeAlberi Un albero binario ` un albero in cui ogni nodo ha al massimo due figli. eOrganizzazionenella memoria Per memorizzare una struttura di questo tipo possiamo usare iPuntatori puntatori. Ogni nodo dell’albero consiste di tre componentiStrutture statichee dinamiche il datoMemorizzazionedelle strutture un puntatore al primo figlio (a sinistra nel grafico dell’albero)ArrayListe un puntatore al secondo figlio (a destra nel grafico dell’albero) Pile e codeAlberi binari Quindi ogni nodo deve essere pensato come un blocco continuo diCreazione di tipidi dati celle di memoriaArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 28 / 35
  35. 35. Strutture dati Ogni puntatore deve puntare o ad un figlio del nodo a cui ` associato eArianna Guidolin oppure deve avere valore NULL, che significa che non ci sono nodiStruttureArray successivi in quella direzioneListe Pile Come per le liste, uno speciale puntatore indica qual ` l’elemento e CodeAlberi iniziale dell’albero, cio` la radice eOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 29 / 35
  36. 36. Strutture datiArianna Guidolin Un altro modo per memorizzare alberi binari pu` essere quello di o considerare un unico blocco di memoria in cui vengono messi inStruttureArray successione un nodo, il figlio sinistro, il figlio destro e cos` via: i figli ıListe Pile del nodo in posizione n sono in posizione 2n (sinistro) e 2n + 1 Code (destro)AlberiOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 30 / 35
  37. 37. Strutture datiArianna Guidolin In questo modo si trovano facilmente genitori, figli o fratelli di unStruttureArray nodo, ma nel caso di alberi sbilanciati oppure con tanti buchi, restanoListe inutilizzate molte celle di memoria Pile CodeAlberiOrganizzazionenella memoriaPuntatoriStrutture statichee dinamicheMemorizzazionedelle struttureArrayListe Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 31 / 35
  38. 38. Strutture datiArianna GuidolinStruttureArrayListe Pile I linguaggi di programmazione mettono a disposizione dei tipi di dati CodeAlberi primitivi, come ad esempio gli interi e i realiOrganizzazionenella memoria Ci sono anche dei modi in cui creare dei tipi di dati personalizzati, aPuntatori seconda delle proprie esigenzeStrutture statichee dinamiche Supponiamo di dover gestire molte variabili contemporaneamente,Memorizzazionedelle strutture che hanno tutte la stessa struttura, per esempio vogliamo catalogareArrayListe dei libri indicando autore, anno di pubblicazione e genere letterario Pile e codeAlberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 32 / 35
  39. 39. Strutture datiArianna GuidolinStruttureArrayListe Invece di definire ogni volta una variabile con la struttura desiderata, Pile Code si pu` definire direttamente un nuovo tipo di dato con la nuova oAlberi struttura che si intende utilizzare: definiamo il nuovo tipo di datoOrganizzazionenella memoria Libro:Puntatori define type Libro {Strutture statichee dinamiche char Autore;Memorizzazionedelle strutture int Anno;Array char Genere;Liste Pile e code }Alberi binariCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 33 / 35
  40. 40. Strutture datiArianna GuidolinStruttureArrayListe Successivamente questo nuovo tipo di dato viene utilizzato come se Pile fosse un tipo primitivo: come per una variabile intera dichiariamo CodeAlberiOrganizzazione int a;nella memoriaPuntatori per un dato del nuovo tipo possiamo dichiarareStrutture statichee dinamiche Libro Amleto;Memorizzazionedelle struttureArray Quindi la variabile Amleto fa riferimento ad una struttura contenenteListe autore, anno e genere del libro e possiamo poi andare ad assegnare le Pile e codeAlberi binari caratteristicheCreazione di tipidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 34 / 35
  41. 41. Strutture datiArianna GuidolinStruttureArray Un tipo di dato completo ` costituito da: eListe Pile un metodo di memorizzazione dei dati CodeAlberi un insieme di operazioniOrganizzazionenella memoria Nella creazione di un nuovo tipo di dato abbiamo solo descritto comePuntatori si possa definire un metodo di memorizzazione di alcuni dati entroStrutture statichee dinamiche una certa struttura, ma non abbiamo posto condizioni per poter fareMemorizzazione operazionidelle struttureArray Per aggiungere procedure sui nuovi tipi di dati, bisogna definirleListe Pile e code all’interno della definizione del tipo stesso. I tipi definiti in cuiAlberi binariCreazione di tipi compaiono anche operazioni vengono chiamati tipi di dati astrattidi datiArianna Guidolin (Universit` degli Studi di Trento) a Strutture dati 4 maggio 2012 35 / 35

×