Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Traversing and Displaying a Linked List | Implementing Data Structures
C-Strukturen
Abschnitt 5. Kapitel 4
single

single

Traversing and Displaying a Linked List

Swipe um das Menü anzuzeigen

Nachdem wir gelernt haben, wie man Knoten erstellt und verbindet, müssen wir überprüfen, ob eine solche Liste korrekt funktioniert!

Dazu schreiben wir eine einfache Funktion, die die gesamte Liste ausgibt.

Die Funktion erhält einen Zeiger auf den Speicherbereich, in dem der Kopf (erste) Knoten der Liste gespeichert ist.

void printList(struct Node* head) {}

Anschließend wird ein temporärer Knoten current erstellt, mit dem wir die gesamte Liste durchlaufen. Der Inhalt des aktuellen Knotens entspricht dem Inhalt des aktuellen Listenknotens.

struct Node* current = head;

Zum Durchlaufen der Liste verwenden wir die while(){}-Schleife mit der notwendigen Bedingung, nämlich bis ein Knoten gefunden wird, dessen next-Feld NULL ist.

Note
Hinweis

Der temp (temporäre) Knoten übernimmt die Rolle eines Pufferknotens. Er wird benötigt, um den Inhalt des aktuellen Knotens vorübergehend zu speichern (und zu löschen). Wenn wir den aktuellen Knoten sofort löschen, verlieren wir die Verbindung zum nächsten Knoten und damit den Zugriff auf die Liste.

while (current != NULL) { }
printf("\n");

Innerhalb der Schleife geben wir den Inhalt des Datenfeldes des aktuellen Knotens aus und ändern das next-Feld, um zum nächsten Knoten zu wechseln.

printf("%d ", current->data);
current = current->next;

Sobald ein Knoten gefunden wird, dessen next-Feld gleich NULL ist, stoppt die Schleife die Anzeige der Knoteninhalte und die Funktion endet.

Aufgabe

Wischen, um mit dem Codieren zu beginnen

Implementierung einer einfachen einfach verketteten Liste mit dynamischer Speicherzuweisung. Die Aufgabe besteht darin, die Funktionen printList und freeList zu vervollständigen.

  1. Implementierung einer Funktion printList mit einem einzelnen Parameter struct Node* head.

    • Innerhalb von printList Deklaration einer Variablen current und Initialisierung mit head.
    • Verwendung einer while-Schleife, um so lange zu iterieren, wie current nicht NULL ist.
    • In jeder Iteration Ausgabe des Feldes data von current und Weiterbewegung von current zum nächsten Knoten.
    • Nach der Schleife Ausgabe eines Zeilenumbruchs zur Trennung der Ausgabe.
  2. In freeList Deklaration einer Variablen current und Initialisierung mit head.

    • Verwendung einer while-Schleife, um so lange zu iterieren, wie current nicht NULL ist.
    • Innerhalb der Schleife Speicherung von current in einer temporären Variablen temp.
    • Weiterbewegung von current zum nächsten Knoten.
    • Freigabe des für temp reservierten Speichers.

Lösung

Switch to desktopWechseln Sie zum Desktop, um in der realen Welt zu übenFahren Sie dort fort, wo Sie sind, indem Sie eine der folgenden Optionen verwenden
War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 5. Kapitel 4
single

single

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

some-alt