Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einfach verkettete Listen (OOP)

Ähnliche Präsentationen


Präsentation zum Thema: "Einfach verkettete Listen (OOP)"—  Präsentation transkript:

1 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

2 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

3 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

4 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

5 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

6 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

7 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

8 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

9 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 Entfernen der Daten eines Bewerbes Auslisten aller Bewerber einer Fachrichtung sortiert nach Abiturnote 5. Eingabe einer maximalen Bewerberzahl x und einer Fachrichtungs nummer und Auslisten aller zugelassenen x Bewerber Aufruf der Funktionen durch den Nutzer aus einem Startmenü, das nach dem Programmstart automatisch auf dem Bildschirm erscheint.


Herunterladen ppt "Einfach verkettete Listen (OOP)"

Ähnliche Präsentationen


Google-Anzeigen