Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoEduardo Moroni Modificato 9 anni fa
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; }
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.