PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl...

30
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.

Transcript of PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl...

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

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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,

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!