Hinweis:
Bitte programmieren Sie bei den beiden folgenden Aufgaben nicht einfach drauflos.
Überlegen Sie sich vor der Umsetzung, wie Sie die Aufgaben lösen wollen. Benutzen Sie
dazu ruhig auch Zeichnungen wie im Studienheft. Sie werden sehen, beide Aufgaben
sind nicht so schwierig, wie es vielleicht beim ersten Durchlesen erscheint.
1. Ändern Sie die einfach verkettete Liste aus dem Studienheft so, dass das Ende der
Liste nicht bei jedem Anhängen neu ermittelt werden muss, sondern in einem eigenen Zeiger gespeichert wird.
Dieser Zeiger für das Listenende soll dann beim Anhängen neuer Elemente benutzt
werden.
Zwei kleine Hilfestellungen zur Lösung:
• Sie müssen dafür sorgen, dass das Listenende nach jedem Anhängen ermittelt
wird und auch an die Funktion main() zurückgeliefert wird. Dazu müssen Sie
die Funktion zum Anhängen entsprechend verändern.
• Als Argument beim Anhängen übergeben Sie dann nicht mehr den Listenanfang, sondern das Listenende.
Welche Version der Liste Sie verwenden, können Sie selbst entscheiden.
Verwenden Sie bitte für Ihre Lösung folgenden Programmkopf:
/* ######################################################
Einsendeaufgabe 5.1
###################################################### */
40 Pkt.
2. Erweitern Sie die einfach verkettete Liste aus dem Studienheft so, dass sie zu einer
doppelt verketteten Liste wird. Ergänzen Sie das Programm außerdem um eine
Funktion, die die Liste rückwärts – also vom letzten Element beginnend bis zum Anfang – ausgibt.
Auch zu dieser Aufgabe zwei Hilfestellungen:
• Sie benötigen einen neuen Zeiger in der Struktur, der die Adresse des Vorgängerelements aufnehmen kann.
• Die wichtigste Änderung müssen Sie beim Anhängen des neuen Elements vornehmen. Hier müssen Sie die Adresse des Vorgängerelements in Sicherheit bringen, bevor Sie den Hilfszeiger auf das neue Element verschieben. Dazu können
Sie zum Beispiel einen Ausdruck wie hilfszeiger->next->last benutzen.
Mit diesem Ausdruck greifen Sie auf einen Zeiger last in dem Element zu, das
über hilfszeiger->next angesprochen wird.
Welche Version der Liste Sie verwenden, können Sie auch bei dieser Aufgabe selbst
entscheiden.
Verwenden Sie für diese Lösung bitte folgenden Programmkopf:
/* ######################################################
Einsendeaufgabe 5.2
###################################################### */
60 Pkt.