La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 1 Liste Introduzione alle.

Presentazioni simili


Presentazione sul tema: "Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 1 Liste Introduzione alle."— Transcript della presentazione:

1 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 1 Liste Introduzione alle strutture dati

2 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 2 Una lista concatenata di stringhe

3 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 3 public class LList { /** Metodi per manipolare le liste */ /** Una lista e’ un riferimento ad un oggetto della classe Link */ private Link first; /** La classe Link definisce gli elementi della lista */ private class Link { Object data; Link next; }

4 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 4 /** Costruisce una lista concatenata vuota. */ public LList() { first = null; } LinkedList null first

5 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 5 Aggiunta di un elemento in testa a una lista concatenata

6 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 6 /** Aggiunge un elemento in testa alla lista concatenata. @param obj l’oggetto da aggiungere */ public void addFirst(Object obj) { Link newLink = new Link(); newLink.data = obj; newLink.next = first; first = newLink; }

7 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 7 Eliminazione del primo elemento di una lista concatenata

8 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 8 /** Toglie il primo elemento dalla lista concatenata. @return l’elemento eliminato */ public Object removeFirst() { if (first == null) return null; else { Object obj = first.data; first = first.next; return obj; }

9 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 9 /** Restituisce il primo elemento della lista concatenata. @return il primo elemento della lista concatenata */ public Object getFirst() { if (first == null) return null; else return first.data; }

10 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 10 L ink Bob null temp Aggiungere un elemento in fondo a una lista concatenata

11 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 11 /** Aggiunge un elemento in fondo alla lista concatenata. @param obj l’oggetto da aggiungere */ public void add(Object obj) { Link newLink = new Link(); newLink.data = obj; newLink.next = null; if (first == null) first = newLink; else { Link temp = first; while(temp.next != null) temp = temp.next; temp.next = newLink; }

12 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 12 Togliere un elemento da una lista concatenata positionprevious

13 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 13 /** Toglie la prima occorrenza di un elemento dalla lista concatenata @param l’oggetto da eliminare @return true se almeno un elemento è stato eliminato dalla lista concatenata. */ public boolean remove (Object obj) { boolean found = false; Link position = first; Link previous = null;

14 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 14 while ((!found) && (position != null)) { if ((position.data).equals(obj)) found = true; else { previous = position; position = position.next; } if (found) if (position == first) first = first.next; else previous.next = position.next; return found; }

15 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 15 /** Controlla la presenza di un oggetto nella lista concatenata @param l’oggetto da controllare @return true se almeno un’occorrenza dell’elemento è trovata */ public boolean contains(Object obj) { boolean found = false; Link l = first; while ((!found) && (l != null) if ((l.data).equals(obj)) found = true; else l = l.next; return found; }

16 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 16 Aggiungere un elemento nella parte centrale di una lista concatenata

17 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 17 Visione concreta di una lista concatenata

18 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 18 File LListTest.java /** Programma che illustra il funzionamento della classe LList */ public class LListTest { public static void main(String[] args) { LList staff = new LList(); staff.add("Dick"); staff.add("Harry"); staff.addFirst("Romeo"); // Romeo  Dick  Harry staff.add("Juliet") staff.add("Nina"); // R  D  H  J  N staff.remove("Dick"); // R  H  J  N staff.toPrint();

19 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 19 if (staff.contains("Romeo")) System.out.println("Qua Romeo c'e'"); else System.out.println("Qua Romeo non c'e'"); staff.removeFirst(); // H  J  N staff.toPrint(); if (staff.contains("Romeo")) System.out.println("Qua Romeo c'e'"); else System.out.println("Qua Romeo non c'e'"); System.out.println("Il primo e' " + staff.getFirst()); staff.clear(); staff.toPrint(); System.out.println("...mentre ora e' tutto vuoto"); }

20 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 20 Riepilogo File LList.java /** Una lista concatenata è una sequenza di elementi dotata di meccanismi di inserimento ed eliminazione. Questa classe ha un sottoinsieme dei metodi della classe standard java.util.LList */ public class LList { /** Costruisce una lista concatenata vuota. */ public LList() { first = null; }

21 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 21 public Object removeFirst() { if (first == null) return null; else { Object obj = first.data; first = first.next; return obj; } /** Aggiunge un elemento in testa alla lista concatenata. @param obj l’oggetto da aggiungere */ public void addFirst(Object obj) { Link newLink = new Link(); newLink.data = obj; newLink.next = first; first = newLink; }

22 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 22 /** Aggiunge un elemento in fondo alla lista concatenata. @param obj l’oggetto da aggiungere */ public void add(Object obj) { Link newLink = new Link(); newLink.data = obj; newLink.next = null; if (first == null) first = newLink; else { Link l = first; while(l.next != null) l = l.next; l.next = newLink; }

23 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 23 private Link first; private class Link { Object data; Link next; } /** Svuota la lista concatenata. */ public void clear ( ) { first = null; }

24 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 24 /** Controlla la presenza di un oggetto nella lista concatenata @param l’oggetto da controllare @return true se almeno un’occorrenza dell’elemento è trovata */ public boolean contains(Object obj) { boolean found; Link l = list; while ((!found) && (l != null) if ((l.data).equals(obj)) found = true; else l = l.next; return found; }

25 Capitolo 17 Introduzione alle strutture dati 25 /** Toglie la prima occorrenza di un oggetto dalla lista concatenata @param l’oggetto da eliminare @return true se almeno un elemento è stato eliminato dalla lista concatenata. */ public boolean remove(Object obj) { boolean found = false; Link position = first; Link previous = null; ©2002 Apogeo

26 Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 26 while ((!found) && (position != null)) { if ((position.data).equals(obj)) found = true; else { previous = position; position = position.next; } if (found) if (position == first) first = first.next; else previous.next = position.next; return found; }


Scaricare ppt "Capitolo 17 Introduzione alle strutture dati Tratti da ©2002 Apogeo srl Horstmann-Concetti di informatica e fondamenti di Java 2 1 Liste Introduzione alle."

Presentazioni simili


Annunci Google