1. Die rekursive Datenstruktur Liste 1

Slides:



Advertisements
Ähnliche Präsentationen
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Advertisements

Kapitel 5. Stacks und Queues
Synonyme: Stapel, Keller, LIFO-Liste usw.
Gliederung Motivation / Grundlagen Sortierverfahren
Sortieren mit Binären Bäumen
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Listen Richard Göbel.
Java: Grundlagen der Objektorientierung
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Einfügen am Ende der Liste Vorher: Nachher:. Einfügen am Ende der Liste //Klasse Knoten public Knoten hintenEinfuegen(Datenelement dneu) { nachfolger.
Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) public Knoten einfuegenVor(Datenelement dNeu, Datenelement dVergleich){
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Informatikunterricht mit Java
Inhalt danach. inhalt danach inhalt danach inhalt danach inhalt danach inhalt danach.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
2. Die rekursive Datenstruktur Baum 2
1. Die rekursive Datenstruktur Liste 1.1 Warteschlange (Queue)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
1.2 Trennung von Struktur und Inhalt
1.5 Das Entwurfsmuster Kompositum
1.6 Die Datenstruktur Stapel Ein Stapel (Stack) ist ein Sonderfall einer Liste. Die Elemente werden nach dem Prinzip LIFO (Last In First Out) angefügt.
Die Methode public Datenelement getEnde (Datenelement d) Ziel: //Klasse Knoten public Datenelement getEnde(Datenelement d){ return nachfolger.getEnde(inhalt);
Aufruf einer Methode eines Objektes vom Typ „Bruch“
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Programmiervorkurs WS 2014/15 Instanzmethoden
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Diskrete Mathe II Übung IKG - Übung Diskrete Mathe II – Jörg Schmittwilken 2 Übung5 Prüft, ob sich folgende Segmente schneiden: –P1(1/7) P2(3/1)
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Eine Vokabelschlange. Schlangen in Anwendungsprogrammen Die Piktogramme von Personen, mit denen wir ursprünglich die Datenstruktur Schlange eingeführt.
Die allgemeine Liste.
Praktische Informatik 1
Rekursion – Speicherverwaltung
Zwei Denkansätze zur Klasse Schlange
Der Abschluss einer Schlange
verkettete Strukturen
Grundkurs Informatik mit Java
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
1. Die rekursive Datenstruktur Liste 1.5 Das Entwurfsmuster Kompositum
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
1. Die rekursive Datenstruktur Liste 1
2. Die rekursive Datenstruktur Baum 2.2 Suchen und Einfügen
Datenstrukturen und Softwareentwicklung
Felder in der Informatik
3. Die Datenstruktur Graph 3.3 Durchlaufen von Graphen
3. Die Datenstruktur Graph 3.2 Repräsentation von Graphen
1. Die rekursive Datenstruktur Liste 1.6 Die Datenstruktur Stapel
Grundkurs Informatik 11-13
Heapsort-Algorithmus
2. Die rekursive Datenstruktur Baum 2.3 Baum und Kompositum
 Präsentation transkript:

1. Die rekursive Datenstruktur Liste 1 1. Die rekursive Datenstruktur Liste 1.4 Methoden der Datenstruktur Liste Die Warteschlange (Queue) ist ein Sonderfall der Datenstruktur Liste. Bei der Warteschlange werden Einfügen und Entfernen nach dem Prinzip FIFO (First In, First Out) umgesetzt. Dafür gibt es die Methoden HintenEinfuegen und AnfangEntfernen. Für Liste gibt es weitere Methoden, wie zum Beispiel VorneEinfuegen, EndeEntfernen, EinfuegenVor, SortiertEinfuegen, usw. Viele dieser Methoden kann man rekursiv implementieren. Informatik 11 - 1. Die rekursive Datenstruktur Liste – 1.4 Methoden der Datenstruktur Liste

Beispiel (Länge der Liste bestimmen) In der Klasse Liste: public int laengeGeben(){ if (anfang==null){ return 0; } else{ return anfang.restlaengeGeben(); In der Klasse Knoten: public int restlaengeGeben(){ if (nachfolger==null){ return 1; } else{ return nachfolger.restlaengeGeben()+1; Informatik 11 - 1. Die rekursive Datenstruktur Liste – 1.4 Methoden der Datenstruktur Liste

Modellierung: Das Ende der Liste erfasst man, indem man durch die Liste läuft und prüft, ob der Nachfolger null ist. Das Ende als eigenes Attribut zu verwalten ist also nicht zwingend nötig. Informatik 11 - 1. Die rekursive Datenstruktur Liste – 1.4 Methoden der Datenstruktur Liste

Übung Im Buch sind auf den Seiten 22 - 32 einige Methoden von Liste ausführlich beschrieben. Arbeite sie der Reihe nach sorgfältig durch und implementiere sie. Als Gerüst kannst du das BlueJ-Projekt liste_2 verwenden. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

Bei einigen Methoden benötigt man beim rekursiven Durchlaufen der Liste den Zugriff auf den Vorgänger des aktuellen Knotens. Man könnte dazu ein eigenes Attribut verwalten. Dies erfordert aber eine deutliche Änderung der Modellierung. Ein kleiner Trick bei der Implementierung vermiedet dies. Am Beispiel der Methode Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) wird dies auf den folgenden Seiten verdeutlicht: Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) if(inhalt != dVergleich){ if(nachfolger !=null){ nachfolger=nachfolger.einfuegenVor(dNeu, dVergleich); } else { hintenEinfuegen(dNeu); } return this; else{ Knoten kNeu; kNeu = new Knoten(dNeu, this); return kNeu; Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

dNeu soll vor d3 eingefügt werden. Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) dNeu soll vor d3 eingefügt werden. In k1 erfolgt der rekursive Aufruf nachfolger = nachfolger.einfuegenVor(dNeu, dVergleich) (Wird noch nicht ausgewertet, da das Rekursionsende noch nicht erreicht ist.) Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

In k2 erfolgt der rekursive Aufruf Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) In k2 erfolgt der rekursive Aufruf nachfolger = nachfolger.einfuegenVor(dNeu, dVergleich) (Wird noch nicht ausgewertet, da das Rekursionsende noch nicht erreicht ist.) Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

d3 ist das Datenelement, vor das dNeu eingefügt werden soll. Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) d3 ist das Datenelement, vor das dNeu eingefügt werden soll. Der Aufruf nachfolger = nachfolger.einfuegenVor(dNeu, dVergleich) wird übersprungen, da inhalt != dVergleich falsch ist. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

Knoten kNeu = new Knoten(dNeu, this) Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) In k3 Knoten kNeu = new Knoten(dNeu, this) erzeugt den neuen Knoten mit k3 (this) als Nachfolger. return kNeu; Das Rekursionsende ist erreicht. Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) In k3 Darauf hat k2 gewartet! nachfolger = kNeu; return this; (also k2) Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) Darauf hat k1 gewartet! nachfolger = k2; return this; (also k1) Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

In Liste muss die Methode so aufgerufen werden: Die Methode public Knoten einfuegenVor (Datenelement dNeu, Datenelement dVergleich) In Liste muss die Methode so aufgerufen werden: anfang=anfang.einfuegenVor(dNeu,dVergleich); anfang.einfuegenVor(dNeu,dVergleich) liefert k1 zurück, also anfang = k1; Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste

Dieses Verfahren kommt auch bei den folgenden Methoden zum Einsatz: Knoten sortiertEinfuegen(Datenelement dNeu) Knoten endeEntfernen() Knoten knotenEntfernen(Datenelement dVergleich) Informatik 11 - 1. Die rekursive Datenstruktur Liste - 1.4 Methoden der Datenstruktur Liste