90 likes | 175 Views
Einfach verkettete Listen (OOP). init() : Listen, Elemente und Zeiger. inc() : Anfügen des ersten Listenelementes. inc() : Einfügen neuer Listenelemente. Inhaltsverzeichnis. prev() : Bestimmen des Vorgängerelementes. Fehler : Versehentliches Ausketten.
E N D
Einfach verkettete Listen (OOP) init(): Listen, Elemente und Zeiger inc(): Anfügen des ersten Listenelementes inc(): Einfügen neuer Listenelemente Inhaltsverzeichnis prev(): Bestimmen des Vorgängerelementes Fehler:Versehentliches Ausketten eras(): Löschen des aktuellen Listenelementes Eine einfache Aufgabe
Einfach verkettete Listen (OOP) 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() { return0; } #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 return0; } #include <iostream.h>class elem {private: int id; public: elem *next; elem() { id=0; next=NULL; } elem(intidi) { id = idi; next = NULL; } } *anker, *aktuell; void init() { anker = aktuell = NULL; } int main() { init(); // Leere Liste anker= aktuell= new elem; // anker->next = NULL; return0; // Erstes Element } anker NULL Keine Liste Leere Liste Liste mit einem Element Listen, Elemente und Zeiger next NULL
anker aktuell Einfach verkettete Listen (OOP) voidinc(int idi) { elem *hilf = newelem(idi); if(!aktuell) { hilf->next = anker; anker = hilf; } aktuell = hilf; } int main() { init(); // Leere Liste inc(1); // Erstes Element return0; } void inc(int idi, string namei) { schueler *hilf =new schueler; hilf->id = idi; hilf->name = namei; } int main() { init(); inc( 1 ,“Peter“ ); return0; } NULL hilf 1 Anfügen des 1. Elementes NULL
2 2 Einfach verkettete Listen (OOP) voidinc(intidi) { elem *hilf = newelem(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 return0; } anker aktuell 1 hilf Einfügen neuer Elemente NULL NULL NULL
2 3 2 2 3 voidinc(intidi) { elem *hilf = newelem(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 return0; } Einfach verkettete Listen (OOP) anker aktuell 1 hilf NULL NULL NULL NULL
2 3 Einfach verkettete Listen (OOP) elem* prev() { elem *hilf; if( (!aktuell) || (aktuell==anker) ) return0; else { hilf = anker; while( hilf && (hilf->next != aktuell) ) hilf = hilf->next; returnhilf; } } int main() { init(); // Leere Liste inc(1); inc(2); // Element 1 und 2 aktuell = anker; inc(3); // Element 3 aktuell = prev(); // Vorgängerelement return0; // wird das aktuelle } aktuell anker hilf NULL Bestimmen des Vorgängerelementes 1 NULL
2 3 2 NULL Einfach verkettete Listen (OOP) 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 !!! return0; } aktuell anker hilf NULL Fehler: Versehentliches Ausketten 1 NULL NULL
3 3 2 2 Einfach verkettete Listen (OOP) booleras() { if(!aktuell) returnfalse; 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 return0; } aktuell anker prev() Löschen des aktuellen Elementes 1 NULL NULL
Einfach verkettete Listen (OOP) 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 Fachrichtung2. Eingeben und speichern der Daten eines Bewerbers 3. Entfernen der Daten eines Bewerbes 4. Auslisten aller Bewerber einer Fachrichtung sortiert nach Abiturnote5. 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. Eine einfache Aufgabe