3. Aufgabe:
Entwickeln Sie Prozeduren und Funktionsprozeduren, die es Ihnen erlauben,
eine Liste mit Studentennamen zu verwalten. Verwenden Sie dabei als
Datenstruktur eine linked list mit den nachfolgenden Definitionen.
Das letzte Element der Liste kann als NIL-Zeiger oder
durch einen Wächterknoten realisiert werden.
CONST Namenlaenge = 40; TYPE nameStr = ARRAY [0..Namenlaenge] OF CHAR; listPtr = POINTER TO listElem; listElem = RECORD studName : nameStr; nachfolger : listPtr END; VAR liste : listPtr;
Implementieren Sie die folgenden Prozeduren und Funktionsprozeduren. Dabei kann von der vereinfachenden Annahme ausgegangen werden, dass es keine Studenten mit gleichem Namen gibt.
Die Prozedur einfuegen hängt den neu einzufügenden Studenten-Namen studname am Anfang der Liste liste ein ( liste ist keine sortierte Liste).
Diese Prozedur löscht den angegebenen Namen aus der Liste. Der nicht mehr benötigte Speicherplatz soll freigegeben werden.
Die Funktionsprozedur suchen liefert TRUE zurück, falls der angegebene Name in der Liste enthalten ist, andernfalls FALSE.
Die Prozedur ausgeben gibt die in der Liste liste gespeicherten Namen aus.
4. Aufgabe:
Schreiben Sie ein Modula-2 Programm UnsortierteListe zum Testen
Ihrer
Prozeduren und Funktionsprozeduren.
Unter anderem soll Ihr Testprogramm folgende
Listenoperationen durchführen:
Maier, Mueller, Schuster, Zimmermann, Adam, Schmid, Sudermann, Sommer, Winter.
Abt, Adam, Mueller, Zimmermann.
Mueller, Zimmermann, Winter, Maier
aus der Liste und Ausgabe der aktualisierten Liste.
Skizzieren Sie die Veränderungen von Liste beim Löschen von Mueller graphisch.