Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Durchlaufen und Anzeigen Einer Verketteten Liste | Implementierung von Datenstrukturen
C-Strukturen Meistern

bookDurchlaufen und Anzeigen Einer Verketteten Liste

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, was bedeutet, dass der Zugriff auf die Liste verloren geht.

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

Innerhalb der Schleife geben wir den Inhalt des data-Feldes 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 Inhalte der Knoten und die Funktion endet.

Aufgabe

Swipe to start coding

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 eine Variable current deklarieren und mit head initialisieren.
    • Eine while-Schleife verwenden, um so lange zu iterieren, wie current nicht NULL ist.
    • In jeder Iteration das Feld data von current ausgeben und current auf das nächste Element setzen.
    • Nach der Schleife ein Newline-Zeichen ausgeben, um die Ausgabe zu trennen.
  2. Innerhalb von freeList eine Variable current deklarieren und mit head initialisieren.

    • Eine while-Schleife verwenden, um so lange zu iterieren, wie current nicht NULL ist.
    • Innerhalb der Schleife current in einer temporären Variable temp speichern.
    • current auf das nächste Element setzen.
    • Den für temp reservierten Speicher freigeben.

Lösung

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

Suggested prompts:

Can you show me the complete function code?

How does this function handle an empty list?

Can you explain what happens if the list has only one node?

close

bookDurchlaufen und Anzeigen Einer Verketteten Liste

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, was bedeutet, dass der Zugriff auf die Liste verloren geht.

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

Innerhalb der Schleife geben wir den Inhalt des data-Feldes 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 Inhalte der Knoten und die Funktion endet.

Aufgabe

Swipe to start coding

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 eine Variable current deklarieren und mit head initialisieren.
    • Eine while-Schleife verwenden, um so lange zu iterieren, wie current nicht NULL ist.
    • In jeder Iteration das Feld data von current ausgeben und current auf das nächste Element setzen.
    • Nach der Schleife ein Newline-Zeichen ausgeben, um die Ausgabe zu trennen.
  2. Innerhalb von freeList eine Variable current deklarieren und mit head initialisieren.

    • Eine while-Schleife verwenden, um so lange zu iterieren, wie current nicht NULL ist.
    • Innerhalb der Schleife current in einer temporären Variable temp speichern.
    • current auf das nächste Element setzen.
    • Den für temp reservierten Speicher freigeben.

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

some-alt