Hallo,
ich habe eine Aufgabe gestellt bekommen, und hab leider keine Ahnnung wie ich da rangehen soll.
Hier die Aufgabe:
In der Vorlesung wurden einfach verkettete Listen eingeführt. Doppelt verkettete
Listen besitzen zusätzlich zum Zeiger auf das nachfolgende Element
auch eine Zeiger auf das vorherige Element. Beim ersten Element der Liste
wird der Zeiger auf das vorherige Element ebenfalls auf NULL gesetzt, genauso
wie es beim letzten Element der einfach verketteten Liste mit dem Zeiger auf
das nachfolgende Element der Fall war.
Im Folgenden soll eine doppelt verkettete Liste implementiert werden.
1. Geben Sie die Definition der Liste (Listenkopf)
typedef s truct List_ {...} List ;
an. Die Struktur soll auch die aktuelle Größe der Liste speichern.
2. Geben Sie die Definition des Listenelements
typedef s truct Node_ {...} Node ;
an. Ein Listenelement soll als eigentlichen Inhalt einen int-Wert enthalten.
3. Schreiben Sie eine Funktion zum Erzeugen und Einfügen eines neuen
Elements void insertIntoList(List* list, int iVal). Der Funktion wird
ein Zeiger auf das Kopfelement und der int-Wert ¨ubergeben, der in die
Liste eingefügt werden soll. Es wird davon ausgegangen, dass die Liste
nach den int Werten aufsteigend sortiert ist. Das neue Element soll so
eingef¨ugt werden, dass die Liste aufsteigend sortiert bleibt.
Der Speicher für das neue Element muss zuerst angelegt werden. Achten
Sie auf korrekte Behandlung beim Einfügen am Anfang bzw. am Schluss
der Liste und in eine leere Liste.
4. Schreiben Sie eine Funktion zum Löschen von Elementen mit
void deleteFromList(List* list, int iVal), der ein Zeiger auf das Kopfelement
der Liste und ein int-Wert ¨ubergeben werden. Es sollen alle Elemente
aus der Liste entfernt werden und ihr Speicher freigegeben werden,
die diesen int-Wert enthalten.
5. Schreiben Sie eine Funktion void printList(List* list), der ein Zeiger
auf das Kopfelement der Liste übergeben wird. Die Funktion soll die
Anzahl der Element in der Liste ausgeben und anschliessend die int-
Wert getrennt durch Pfeile (->), falls mindestens noch ein Element in
der Liste ist. Beispiel-Ausgabe:
Double linked list with 4 elements.
Data: 2 -> 4 -> 5 -> 5
6. Schreiben auch eine Funktion main(), die zunächst eine Liste anlegt und
dieWerte 5, 7, 10, 2, 7, 3 und 10 in dieser Reihenfolge in die Liste einfügt.
Anschliessend soll der Wert 10 aus der Liste entfernt werden. Geben Sie
nach jedem einzelnen Schritt die Liste mit der Funktion printList() aus.
Wär echt super, wenn mir da jmd. helfen könnte...
Danke schon mal im Voraus.