Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,

Ähnliche Präsentationen


Präsentation zum Thema: "PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,"—  Präsentation transkript:

1 PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen, Anfang lesen, Anfang löschen, Leerheitstest Zunächst zur Vereinfachung: Jedes Element enthält nur eine ganze Zahl.

2 PRJ 2007/2 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen, Anfang lesen, Anfang löschen, Leerheitstest Zunächst zur Vereinfachung: Jedes Element enthält nur eine ganze Zahl. Lösung : Jedes Element kennt nur genau seinen Nachfolger verkettete Datenstruktur

3 PRJ 2007/3 Stefan Dissmann Idee der Verkettung 17 1.für jedes Element ein Objekt anlegen

4 PRJ 2007/4 Stefan Dissmann Idee der Verkettung 17 9 1.für jedes Element ein Objekt anlegen 2.Objekt kennt weiteres Objekt

5 PRJ 2007/5 Stefan Dissmann Idee der Verkettung 17 933 1.für jedes Element ein Objekt anlegen 2.Objekt kennt weiteres Objekt 3.und so fort …

6 PRJ 2007/6 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln

7 PRJ 2007/7 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { }

8 PRJ 2007/8 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { private int wert; }

9 PRJ 2007/9 Stefan Dissmann Technische Umsetzung: Element 1.Problem: Klasse für einzelnes Element der Liste entwickeln public class IntElement { private int wert; private IntElement nachfolger; }

10 PRJ 2007/10 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen:

11 PRJ 2007/11 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen: public class IntElement { private int wert; private IntElement nachfolger; public IntElement(int w) { wert = w; nachfolger = null; } public void verkette(IntElement n) { nachfolger = n; }

12 PRJ 2007/12 Stefan Dissmann Technische Umsetzung: Element Und Konstruktor und Methoden ergänzen: public class IntElement { private int wert; private IntElement nachfolger; public IntElement(int w) { wert = w; nachfolger = null; } public void verkette(IntElement n) { nachfolger = n; }

13 PRJ 2007/13 Stefan Dissmann Technische Umsetzung: Element Und weitere Methoden: public class IntElement { … public IntElement gibNachfolger() { return nachfolger; } public int gibWert() { return wert; }

14 PRJ 2007/14 Stefan Dissmann Technische Umsetzung: Liste 2.Problem: Klasse für Liste von ganzen Zahlen entwickeln

15 PRJ 2007/15 Stefan Dissmann Technische Umsetzung: Liste 2.Problem: Klasse für Liste von ganzen Zahlen entwickeln public class IntListe { public IntListe() {…}; public void fügeAn(int w) {…}; public int gibErstes() {…}; public void löscheErstes() {…}; public boolean leer() {…}; }

16 PRJ 2007/16 Stefan Dissmann Technische Umsetzung: Liste … und Attribute ergänzen: public class IntListe { private IntElement anfang, ende; public IntListe() {…}; public void fügeAn(int w) {…}; public int gibErstes() {…}; public void löscheErstes() {…}; public boolean leer() {…}; }

17 PRJ 2007/17 Stefan Dissmann Implementierung: Liste … und implementieren: public IntListe() { anfang = ende = null; }

18 PRJ 2007/18 Stefan Dissmann Implementierung: Liste … und implementieren: public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; }

19 PRJ 2007/19 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } anfang ende null

20 PRJ 2007/20 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger neu anfang ende null

21 PRJ 2007/21 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger neu null anfang ende

22 PRJ 2007/22 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } null anfang ende wert nachfolger neu

23 PRJ 2007/23 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

24 PRJ 2007/24 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

25 PRJ 2007/25 Stefan Dissmann Implementierung: Liste public void fügeAn(int w) { IntElement neu = new IntElement(w); if (anfang == null) { anfang = ende = neu; } else { ende.verkette(neu); ende = neu; } wert nachfolger wert nachfolger anfang ende wert nachfolger neu …

26 PRJ 2007/26 Stefan Dissmann Implementierung: Liste public int gibErstes() { if (anfang != null) return anfang.gibWert(); else return 0; }

27 PRJ 2007/27 Stefan Dissmann Implementierung: Liste public boolean leer() { return anfang == null; }

28 PRJ 2007/28 Stefan Dissmann Implementierung: Liste public void löscheErstes() { if (anfang != ende) { anfang = anfang.gibNachfolger(); } else { anfang = ende = null; }

29 PRJ 2007/29 Stefan Dissmann Anwendung der Liste IntL iste zahlen = new IntListe(); zahlen.fügeAn(19); zahlen.fügeAn(3); zahlen.fügeAn(28); while (!zahlen.leer()) { System.out.println(zahlen.gibErstes()); zahlen.löscheErstes(); }

30 PRJ 2007/30 Stefan Dissmann Anwendung der Liste IntL iste zahlen = new IntListe(); zahlen.fügeAn(19); zahlen.fügeAn(3); zahlen.fügeAn(28); while (!zahlen.leer()) { System.out.println(zahlen.gibErstes()); zahlen.löscheErstes(); } Anmerkung: Bei der Benutzung von IntListe wird IntElement nicht benötigt!


Herunterladen ppt "PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,"

Ähnliche Präsentationen


Google-Anzeigen