Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einfach verkettete Listen (OOP) Inhaltsverzeichnis Inhaltsverzeichnis init(): Listen, Elemente und Zeiger init(): Listen, Elemente und Zeiger inc(): Anfügen.

Ähnliche Präsentationen


Präsentation zum Thema: "Einfach verkettete Listen (OOP) Inhaltsverzeichnis Inhaltsverzeichnis init(): Listen, Elemente und Zeiger init(): Listen, Elemente und Zeiger inc(): Anfügen."—  Präsentation transkript:

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

2 Einfach verkettete Listen (OOP) Listen, Elemente und Zeiger Listen, Elemente und Zeiger NULLNULL anker #include 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 } aktuell nextnext #include 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; } #include class elem { private: int id; public: elem *next; elem(){ id=0;next=NULL; } } *anker, *aktuell; void init() { anker = aktuell = NULL; } int main() { return 0; } NULLNULL Leere Liste Keine Liste Liste mit einem Element

3 NULLNULL Einfach verkettete Listen (OOP) Anfügen des 1. Elementes Anfügen des 1. Elementes NULLNULL void inc(int idi, string namei) { schueler *hilf = new schueler; hilf->id = idi; hilf->name = namei; } int main() { init(); inc( 1,Peter ); return 0; } aktuell anker 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; } 1 hilf

4 NULLNULL 2 NULLNULL NULLNULL 1 2 Einfach verkettete Listen (OOP) Einfügen neuer Elemente Einfügen neuer Elemente aktuell anker 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; } hilf

5 NULLNULL 23 NULLNULL NULLNULL 2 NULLNULL 1 Einfach verkettete Listen (OOP) aktuell anker 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; } hilf 23

6 NULLNULL NULLNULL 23 1 Einfach verkettete Listen (OOP) aktuell anker 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 } hilf Bestimmen des Vorgängerelementes Bestimmen des Vorgängerelementes

7 NULLNULL NULLNULL NULLNULL 23 1 Einfach verkettete Listen (OOP) aktuell anker 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; } hilf Fehler: Versehentliches Ausketten Fehler: Versehentliches Ausketten NULLNULL 2

8 NULLNULL 3 NULLNULL 32 1 Einfach verkettete Listen (OOP) aktuell anker 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; } Löschen des aktuellen Elementes Löschen des aktuellen Elementes 2 prev()

9 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 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. Eine einfache Aufgabe Eine einfache Aufgabe


Herunterladen ppt "Einfach verkettete Listen (OOP) Inhaltsverzeichnis Inhaltsverzeichnis init(): Listen, Elemente und Zeiger init(): Listen, Elemente und Zeiger inc(): Anfügen."

Ähnliche Präsentationen


Google-Anzeigen