Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Friederike Zietlow Geändert vor über 10 Jahren
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!
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.