Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
LEZIONE SULLE LISTE LINKATE Prof. Silvano Natalizi, classe IV Liceo Tecnico Marzo 2009
PROBLEMA 1 <ul><li>Creare un file di testo con una sequenza di nomi (di una sola parola senza spazi) di studenti, materia,...
PROBLEMA 2  <ul><li>leggete il file precedente con i metodi della classe Scanner. Anzitutto stampate sul pannello DOS, per...
PROBLEMA 3 <ul><li>La precedente stampa, portatela su di un pannello grafico. Per ogni studente crea un pannello dove most...
ANALISI DELLA SOLUZIONE <ul><li>Possiamo memorizzare i dati del file in un array? </li></ul><ul><li>No, perché in un array...
NOZIONE DI LISTA LINKATA (CONCATENATA) <ul><li>Una lista concatenata è fatta da una sequenza di nodi </li></ul><ul><li>Cia...
LISTA SINGOLA <ul><li>In una lista singola, ciascun nodo ha un solo puntatore, che punta al successivo nodo della lista </...
OGGETTO CHE PUNTA AL PRIMO NODO <ul><li>Ci occorre un oggetto che punti al primo nodo della lista </li></ul><ul><li>Chiami...
ATTRAVERSAMENTO DI UNA LISTA <ul><li>Quando si attraversa una lista linkata è come andare ad una caccia al tesoro. </li></...
LISTA CONCATENATA IN JAVA <ul><li>Come indichiamo una lista concatenata in java? </li></ul><ul><li>Poiché ciascun nodo con...
IL PUNTATORE <ul><li>Il puntatore di un nodo punta ad un oggetto che è simile a quello che ci serve nel data. </li></ul><u...
DEFINIZIONE DELLA VARIABILE TOP <ul><li>La variabile top può essere definita come una variabile di tipo Node, pertanto </l...
COSTRUZIONE DI UNA LISTA <ul><li>Risolviamo il problema di leggere dei numeri interi positivi e di costruire una lista  co...
IMPLEMENTAZIONE DELLA LISTA <ul><li>Quando leggiamo un nuovo numero, dobbiamo </li></ul><ul><li>Creare il nuovo nodo, inst...
COSTRUZIONE DELLA LISTA, AGGIUNTA DI NUOVI NODI IN CODA <ul><li>np=new Node(n); </li></ul><ul><li>if (top==null) top=np; <...
SPIEGAZIONE VISIVA
Upcoming SlideShare
Loading in …5
×

Lezione Sulle Liste Linkate

3,397 views

Published on

lista concatenata

  • Be the first to comment

  • Be the first to like this

Lezione Sulle Liste Linkate

  1. 1. LEZIONE SULLE LISTE LINKATE Prof. Silvano Natalizi, classe IV Liceo Tecnico Marzo 2009
  2. 2. PROBLEMA 1 <ul><li>Creare un file di testo con una sequenza di nomi (di una sola parola senza spazi) di studenti, materia, voto: fatto ad esempio in questo modo: STUDENTE Mario MATERIA matematica VOTO 4 VOTO 6 VOTO 6 MATERIA italiano VOTO 7 STUDENTE Rossi MATERIA italiano VOTO 8 VOTO 7 </li></ul>
  3. 3. PROBLEMA 2 <ul><li>leggete il file precedente con i metodi della classe Scanner. Anzitutto stampate sul pannello DOS, per ogni studente, il suo nome, e le materie ciascuna con i suoi voti. Al seguente modo: </li></ul><ul><li>Studente: Mario </li></ul><ul><li>Materia: matematica </li></ul><ul><li>voto: 4 6 6 </li></ul><ul><li>Materia: italiano </li></ul><ul><li>voto: 7 </li></ul><ul><li>  </li></ul><ul><li>Studente: Rossi </li></ul><ul><li>Materia:italiano </li></ul><ul><li>voto: 8 , 7 </li></ul>
  4. 4. PROBLEMA 3 <ul><li>La precedente stampa, portatela su di un pannello grafico. Per ogni studente crea un pannello dove mostri il suo nome, e per ogni materia la media dei suoi voti. </li></ul>
  5. 5. ANALISI DELLA SOLUZIONE <ul><li>Possiamo memorizzare i dati del file in un array? </li></ul><ul><li>No, perché in un array di java dobbiamo avere dei dati omogeni tra di loro. </li></ul><ul><li>Qui invece abbiamo dei dati variabili </li></ul><ul><li>Possiamo però ricorrere ad un’altra struttura dati, quella delle liste linkate. </li></ul>
  6. 6. NOZIONE DI LISTA LINKATA (CONCATENATA) <ul><li>Una lista concatenata è fatta da una sequenza di nodi </li></ul><ul><li>Ciascuno dei quali ha due puntatori, al nodo precedente e al nodo successivo </li></ul>
  7. 7. LISTA SINGOLA <ul><li>In una lista singola, ciascun nodo ha un solo puntatore, che punta al successivo nodo della lista </li></ul><ul><li>Possiamo pensare ad un nodo come ad una cella con due componenti: </li></ul><ul><li>Data rappresenta i dati del nodo; uno o più attributi che devono essere memorizzati nel nodo </li></ul><ul><li>Next è un puntatore al nodo successivo </li></ul><ul><li>Se il nodo successivo non c’è il suo puntatore è il puntatore “null pointer” </li></ul><ul><li>In java il valore “null pointer” è null. </li></ul>data next
  8. 8. OGGETTO CHE PUNTA AL PRIMO NODO <ul><li>Ci occorre un oggetto che punti al primo nodo della lista </li></ul><ul><li>Chiamiamolo top </li></ul><ul><li>Se la lista è vuota, top è null </li></ul><ul><li>Il simbolo di terra è usato per indicare il puntatore nullo </li></ul>
  9. 9. ATTRAVERSAMENTO DI UNA LISTA <ul><li>Quando si attraversa una lista linkata è come andare ad una caccia al tesoro. </li></ul><ul><li>Sapete dove si trova il primo indizio. Ve lo dice TOP. </li></ul><ul><li>Arrivati al primo indizio, questo vi rinvia ad un secondo indizio. Ve lo dice next. </li></ul><ul><li>Quando arrivate al secondo indizio, questi vi rinvia ad un terzo indizio (tramite next); e così via </li></ul><ul><li>Quando arrivate a recuperare l’ultimo indizio, il “puntatore nullo” vi fa capire che siete giunti alla fine della caccia. (la fine della lista) </li></ul>
  10. 10. LISTA CONCATENATA IN JAVA <ul><li>Come indichiamo una lista concatenata in java? </li></ul><ul><li>Poiché ciascun nodo consiste di almeno due attributi, ci occorre una classe per definire il formato di un nodo. </li></ul><ul><li>Il componente data può consistere di uno o più campi (ciascuno dei quali può anche essere un oggetto con ulteriori attributi). </li></ul><ul><li>Il tipo di questi attributi dipende dal tipo di dato che occorre memorizzare </li></ul><ul><li>Ma qual è il tipo del campo next? </li></ul><ul><li>Sappiamo che è un puntatore </li></ul><ul><li>Ma un puntatore a cosa? </li></ul>
  11. 11. IL PUNTATORE <ul><li>Il puntatore di un nodo punta ad un oggetto che è simile a quello che ci serve nel data. </li></ul><ul><li>Ad esempio supponiamo che il dato sia in ciascun nodo un numero intero. </li></ul><ul><li>Definiamo la classe, dalla quale saranno creati i nodi di questa lista, al seguente modo: </li></ul><ul><li>Class Node { </li></ul><ul><li>int num; </li></ul><ul><li>Node next; </li></ul><ul><li> } </li></ul>
  12. 12. DEFINIZIONE DELLA VARIABILE TOP <ul><li>La variabile top può essere definita come una variabile di tipo Node, pertanto </li></ul><ul><li>Node top; </li></ul><ul><li>La dichiarazione di top alloca spazio per top, ma non crea nessun nodo. Ancora non ci sono nodi nella lista </li></ul><ul><li>Creiamo il primo nodo ed assegnamo il suo indirizzo a top: </li></ul><ul><li>Top=new Node(); </li></ul>
  13. 13. COSTRUZIONE DI UNA LISTA <ul><li>Risolviamo il problema di leggere dei numeri interi positivi e di costruire una lista con questi numeri </li></ul><ul><li>Ad esempio dati i numeri 36 15 52 23 0 </li></ul><ul><li>Vogliamo costruire la seguente lista: </li></ul>
  14. 14. IMPLEMENTAZIONE DELLA LISTA <ul><li>Quando leggiamo un nuovo numero, dobbiamo </li></ul><ul><li>Creare il nuovo nodo, instanziando l’oggetto corrispondente </li></ul><ul><li>Caricare il numero nel nuovo nodo </li></ul><ul><li>Far si che il nuovo nodo sia l’ultimo della lista </li></ul><ul><li>Codifichiamo il costruttore della classe Node </li></ul><ul><li>public Node (int n) { </li></ul><ul><ul><ul><li>num=n; </li></ul></ul></ul><ul><ul><li> next=null; </li></ul></ul><ul><ul><li>} </li></ul></ul>
  15. 15. COSTRUZIONE DELLA LISTA, AGGIUNTA DI NUOVI NODI IN CODA <ul><li>np=new Node(n); </li></ul><ul><li>if (top==null) top=np; </li></ul><ul><li>else last.next=np; </li></ul><ul><li>last=np; </li></ul><ul><li>last è un puntatore all’ultimo nodo </li></ul>
  16. 16. SPIEGAZIONE VISIVA

×