Einfach verkettete Listen (OOP)

Slides:



Advertisements
Ähnliche Präsentationen
Klassen - Verkettete Liste -
Advertisements

Sortieren I - Bubblesort -
<d,a,s, ,i,s,t, ,e,i,n,e, ,L,i,s,t,e>
Kapitel 3: Listen Lineare Liste: endliche Folge von Elementen eines Grundtyps (n>=0), leere Liste falls n=0 Listenelemente besitzen.
der Universität Oldenburg
Gliederung Motivation / Grundlagen Sortierverfahren
Sortieren mit Binären Bäumen
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
FH-Hof Fehlerbehandlung Richard Göbel. FH-Hof Konzept Fehler können mit dem Operator throw einer übergeordneten Funktion signalisiert werden. Parameter.
WHILE - Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (06 - Anwendungen von Stapeln und Schlangen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (07 - Skiplisten) Prof. Th. Ottmann.
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.
Tag 2 Look-up-Tabellen, Zufallszahlen, Listen, Speichermanagement und Dateiverwaltung Quelle: 3D-Spiele mit C++ und DirectX in 21 Tagen, Alexander.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.

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 Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
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.
Vorbereitung: struct SX { int x; struct SX *p; } *px, *ph; px: Zeiger auf Listen- anfang ph: Hilfszeiger px = NULL; px zeigt auf leere Liste px.
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
C++ Standardbibliothek
1 C++ Standardbibliothek Breymann_Folien Die C++ Standardbibliothek (standard library) stellt ein erweiterbares Rahmenwerk mit folgenden Komponenten zur.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einfach verkettete Listen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Rekursive Funktionen (Fakultät)
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik WS 200^8 Dr. Wieland Schwinger
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmiersprache C 4
Informatik 1 Letzte Übung.
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.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
1 // 13_2_ADT_Unger_Graph // ungerichteter, knotenmarkierter Graph als ADT // #include struct Knoten { public: void Erzeuge_Kn (int, char*); char* Get_Marke.
1 // Heap als ADT // JW: V1.0 // Vorlage gemaess EED-Quelltext // #include #include // für double pow (double d, int i) #include // fuer INT_MIN.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
1 // Verkettete Liste 3 // demonstriert verkettete Listen und // Rekursion // (mit Entfernen eines Listenelementes) // #include struct Liste { int Element;
Binärer Suchbaum IV AVL-Baum I
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
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.
Zwei Denkansätze zur Klasse Schlange
Felder in Java.
 Präsentation transkript:

Einfach verkettete Listen (OOP) Inhaltsverzeichnis init(): Listen, Elemente und Zeiger inc(): Anfügen des ersten Listenelementes inc(): Einfügen neuer Listenelemente prev(): Bestimmen des Vorgängerelementes Fehler: Versehentliches Ausketten eras(): Löschen des aktuellen Listenelementes Eine einfache Aufgabe

Einfach verkettete Listen (OOP) Listen, Elemente und Zeiger aktuell #include <iostream.h> class elem { private: int id; public: elem *next; elem(){ id=0;next=NULL; } } *anker, *aktuell; void init() { anker = aktuell = NULL; } int main() { return 0; #include <iostream.h> class elem { private: int id; public: elem *next; elem() { id=0; next=NULL; } elem(int idi) { id = idi; next = NULL; } } *anker, *aktuell; void init() { anker = aktuell = NULL; } int main() { init(); // Leere Liste anker= aktuell= new elem; // anker->next = NULL; return 0; // Erstes Element #include <iostream.h> class elem { private: int id; public: elem *next; elem(){ id=0;next=NULL; } } *anker, *aktuell; void init() { anker = aktuell = NULL; } int main() { init(); // Leere Liste return 0; anker NULL Liste mit einem Element Keine Liste Leere Liste next NULL

Einfach verkettete Listen (OOP) Anfügen des 1. Elementes anker aktuell void inc(int idi, string namei) { schueler *hilf = new schueler; hilf->id = idi; hilf->name = namei; } int main() { init(); inc( 1 ,“Peter“ ); return 0; void inc(int idi) { elem *hilf = new elem(idi); if(!aktuell) { hilf->next = anker; anker = hilf; } aktuell = hilf; int main() { init(); // Leere Liste inc(1); // Erstes Element return 0; NULL hilf 1 NULL

Einfach verkettete Listen (OOP) Einfügen neuer Elemente void inc(int idi) { elem *hilf = new elem(idi); if(aktuell) { hilf->next = aktuell->next; aktuell->next = hilf; } else { hilf->next = anker; anker = hilf; aktuell = hilf; int main() { init(); // Leere Liste inc(1); // Erstes Element inc(2); // Zweites Element return 0; anker aktuell 1 hilf 2 NULL 2 NULL NULL

Einfach verkettete Listen (OOP) void inc(int idi) { elem *hilf = new elem(idi); if(aktuell) { hilf->next = aktuell->next; aktuell->next = hilf; } else { hilf->next = anker; anker = hilf; aktuell = hilf; aktuell->id = idi; aktuell->name = namei; int main() { init(); // Leere Liste inc(1); // Erstes Element inc(2); // Zweites Element aktuell = anker; inc(3); // Drittes Element return 0; anker aktuell 1 hilf 3 2 3 NULL 2 NULL 2 NULL NULL

Einfach verkettete Listen (OOP) Bestimmen des Vorgängerelementes elem* prev() { elem *hilf; if( (!aktuell) || (aktuell = = anker) ) return 0; else { hilf = anker; while( hilf && (hilf->next != aktuell) ) hilf = hilf->next; return hilf; } int main() { init(); // Leere Liste inc(1); inc(2); // Element 1 und 2 aktuell = anker; inc(3); // Element 3 aktuell = prev(); // Vorgängerelement return 0; // wird das aktuelle aktuell anker hilf NULL 1 3 2 NULL

Einfach verkettete Listen (OOP) Fehler: Versehentliches Ausketten int main() { init(); // Leere Liste inc(1); inc(2); // Element 1 und 2 aktuell = anker; inc(3); // Element 3 aktuell = last(); // Vorgängerelement aktuell->next = NULL; // !!! Fehler !!! return 0; } aktuell anker hilf NULL 1 3 NULL 2 NULL 2 NULL

Einfach verkettete Listen (OOP) Löschen des aktuellen Elementes bool eras() { if(!aktuell) return false; if (aktuell==anker) anker = aktuell->next; else prev()->next = aktuell->next; delete aktuell; aktuell=anker; } int main() { init(); // Leere Liste inc(1);inc(2);inc(3); // Elemente 1,2,3 aktuell = anker->next; // aktu auf Element 2 eras(); // Löschen Element 2 return 0; aktuell anker prev() 1 2 3 NULL 3 2 NULL

Einfach verkettete Listen (OOP) Eine einfache Aufgabe An einer FH bestehen für die Zulassung zum Studium für einige Fach-richtungen nur begrenzt viele Studienplätze zur Verfügung. Deshalb werden die Bewerber in Wartelisten gespeichert, in denen vom Bewerber der Name und die Abiturnote (1.0, …, 5.0) gespeichert sind. Für jede Fachrichtung wird eine gesonderte, nach der Abiturnote aufsteigend geordnete Liste dynamisch aufgebaut. Es soll eine OOP-Lösung mit Hilfe einfach verketteter Listen geschaffen werden, die folgende Funktionen realisieren kann: 1. Erstellen einer neuen Bewerberliste für eine bestimmte Fachrichtung 2. Eingeben und speichern der Daten eines Bewerbers 3. Entfernen der Daten eines Bewerbes 4. Auslisten aller Bewerber einer Fachrichtung sortiert nach Abiturnote 5. Eingabe einer maximalen Bewerberzahl x und einer Fachrichtungs- nummer und Auslisten aller zugelassenen x Bewerber. 6. Aufruf der Funktionen durch den Nutzer aus einem Startmenü, das nach dem Programmstart automatisch auf dem Bildschirm erscheint.