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.
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.
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.
-
Implementierung einer Funktion
printListmit einem einzelnen Parameterstruct Node* head.- Innerhalb von
printListDeklaration einer Variablencurrentund Initialisierung mithead. - Verwendung einer
while-Schleife, um so lange zu iterieren, wiecurrentnichtNULList. - In jeder Iteration Ausgabe des Feldes
datavoncurrentund Weiterbewegung voncurrentzum nächsten Knoten. - Nach der Schleife Ausgabe eines Zeilenumbruchs zur Trennung der Ausgabe.
- Innerhalb von
-
In
freeListDeklaration einer Variablencurrentund Initialisierung mithead.- Verwendung einer
while-Schleife, um so lange zu iterieren, wiecurrentnichtNULList. - Innerhalb der Schleife Speicherung von
currentin einer temporären Variablentemp. - Weiterbewegung von
currentzum nächsten Knoten. - Freigabe des für
tempreservierten Speichers.
- Verwendung einer
Lösung
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen