![Page 1: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/1.jpg)
PRJ 2007/1Stefan 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.
![Page 2: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/2.jpg)
PRJ 2007/2Stefan 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
![Page 3: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/3.jpg)
PRJ 2007/3Stefan Dissmann
Idee der Verkettung
17
1. für jedes Element ein Objekt anlegen
![Page 4: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/4.jpg)
PRJ 2007/4Stefan Dissmann
Idee der Verkettung
17 9
1. für jedes Element ein Objekt anlegen
2. Objekt kennt weiteres Objekt
![Page 5: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/5.jpg)
PRJ 2007/5Stefan Dissmann
Idee der Verkettung
17 9 33
1. für jedes Element ein Objekt anlegen
2. Objekt kennt weiteres Objekt
3. und so fort …
![Page 6: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/6.jpg)
PRJ 2007/6Stefan Dissmann
Technische Umsetzung: Element
1. Problem:Klasse für einzelnes Element der Liste entwickeln
![Page 7: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/7.jpg)
PRJ 2007/7Stefan Dissmann
Technische Umsetzung: Element
1. Problem:Klasse für einzelnes Element der Liste entwickeln
public class IntElement {
}
![Page 8: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/8.jpg)
PRJ 2007/8Stefan Dissmann
Technische Umsetzung: Element
1. Problem:Klasse für einzelnes Element der Liste entwickeln
public class IntElement {
private int wert;
}
![Page 9: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/9.jpg)
PRJ 2007/9Stefan Dissmann
Technische Umsetzung: Element
1. Problem:Klasse für einzelnes Element der Liste entwickeln
public class IntElement {
private int wert;
private IntElement nachfolger;
}
![Page 10: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/10.jpg)
PRJ 2007/10Stefan Dissmann
Technische Umsetzung: Element
Und Konstruktor und Methoden ergänzen:
![Page 11: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/11.jpg)
PRJ 2007/11Stefan 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;
}
}
![Page 12: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/12.jpg)
PRJ 2007/12Stefan 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;
}
}
![Page 13: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/13.jpg)
PRJ 2007/13Stefan Dissmann
Technische Umsetzung: Element
Und weitere Methoden:
public class IntElement {
…
public IntElement gibNachfolger() {
return nachfolger;
}
public int gibWert() {
return wert;
}
}
![Page 14: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/14.jpg)
PRJ 2007/14Stefan Dissmann
Technische Umsetzung: Liste
2. Problem:Klasse für Liste von ganzen Zahlen entwickeln
![Page 15: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/15.jpg)
PRJ 2007/15Stefan 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() {…};
}
![Page 16: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/16.jpg)
PRJ 2007/16Stefan 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() {…};
}
![Page 17: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/17.jpg)
PRJ 2007/17Stefan Dissmann
Implementierung: Liste
… und implementieren:
public IntListe() {
anfang = ende = null;
}
![Page 18: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/18.jpg)
PRJ 2007/18Stefan 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;
}
}
![Page 19: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/19.jpg)
PRJ 2007/19Stefan 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
![Page 20: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/20.jpg)
PRJ 2007/20Stefan 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
![Page 21: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/21.jpg)
PRJ 2007/21Stefan 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
![Page 22: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/22.jpg)
PRJ 2007/22Stefan 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
![Page 23: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/23.jpg)
PRJ 2007/23Stefan 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
…
![Page 24: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/24.jpg)
PRJ 2007/24Stefan 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
…
![Page 25: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/25.jpg)
PRJ 2007/25Stefan 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
…
![Page 26: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/26.jpg)
PRJ 2007/26Stefan Dissmann
Implementierung: Liste
public int gibErstes() {
if (anfang != null)
return anfang.gibWert();
else
return 0;
}
![Page 27: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/27.jpg)
PRJ 2007/27Stefan Dissmann
Implementierung: Liste
public boolean leer() {
return anfang == null;
}
![Page 28: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/28.jpg)
PRJ 2007/28Stefan Dissmann
Implementierung: Liste
public void löscheErstes() {
if (anfang != ende) {
anfang = anfang.gibNachfolger();
} else {
anfang = ende = null;
}
}
![Page 29: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/29.jpg)
PRJ 2007/29Stefan Dissmann
Anwendung der Liste
IntListe 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();
}
![Page 30: PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,](https://reader036.vdocuments.site/reader036/viewer/2022062622/55204d6949795902118bfe13/html5/thumbnails/30.jpg)
PRJ 2007/30Stefan Dissmann
Anwendung der Liste
IntListe 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!