single
Elemente Hinzufügen
Swipe um das Menü anzuzeigen
Um eine einfach verkettete Liste nützlich zu machen, müssen Knoten hinzugefügt werden. Hierbei wird die Logik implementiert, um Knoten in die Liste einzufügen. Neue Knoten werden erstellt, miteinander verbunden und so integriert, dass die Liste beim Hinzufügen von Elementen dynamisch wächst.
Dieser praxisorientierte Ansatz vermittelt ein genaues Verständnis der Abläufe im Hintergrund.
Implementierung der Knoteneinfügung
Eine einfache Funktion zur Erstellung eines Knotens:
- Übergabe einer Zahl vom Typ int als Argument, die im Datenfeld des Knotens gespeichert wird;
- Erstellung eines Zeigers auf einen dynamisch allozierten Speicherbereich (unter Berücksichtigung der Knotengröße);
- Überprüfung des Erfolgs der Speicherzuweisung für den Knoten;
- Einfügen des gewünschten Wertes (Funktionsargument) in das Datenfeld;
- Der Next-Zeiger muss NULL sein, da die Funktion nur einen Knoten erstellt;
- Die Funktion gibt einen Zeiger auf den Speicherbereich zurück, in dem der Wert gespeichert ist.
Die Funktion AddNewNode() erhält einen Zeiger auf einen Zeiger, da sie den Wert des Zeigers auf den ersten (head) Knoten der Liste sowie den Wert, der im neuen Knoten gespeichert wird, ändern kann:
void AddNewNode(struct Node** head, int value)
{
...
}
Ist die Liste leer (*head == NULL), wird der Zeiger auf den Kopf der Liste (*head) einfach auf den neuen Knoten (newNode) gesetzt; in diesem Fall wird newNode zum ersten Knoten (Kopfknoten). Bei einer nicht-leeren Liste wird mit einer Schleife nach dem letzten Knoten gesucht.
Der aktuelle Knoten dient als Pufferknoten, mit dessen Hilfe die Liste durchlaufen und ein Knoten gefunden werden kann, der auf nichts mehr zeigt (*next == NULL).
struct Node* current = *head;
while (current->next != NULL)
{
...
}
Am Ende muss der neue Knoten newNode zum letzten Knoten werden, was bedeutet, dass current->next gleich newNode sein muss. Nun ist newNode der letzte Knoten in der Liste.
Als Aufgabe soll eine Funktion entwickelt und hinzugefügt werden, die neue Knoten zu bestehenden Knoten hinzufügt.
Wischen, um mit dem Codieren zu beginnen
Erstellung einer Funktion addNewNode, die einen neuen Knoten am Ende einer einfach verketteten Liste hinzufügt.
Innerhalb der Funktion:
- Deklaration einer Variablen
struct Node* newNodeund Erzeugung eines neuen Knotens mitcreateNode(value). - Überprüfung, ob die Liste leer ist, indem
*head == NULLgetestet wird. - Falls die Liste leer ist, Zuweisung von
newNodean*head. - Falls die Liste nicht leer ist, Deklaration von
struct Node* currentund Zuweisung von*head. - Durchlaufen der Liste mit einer
while-Schleife, biscurrent->nextgleichNULList. - Nach Erreichen des letzten Knotens Setzen von
current->next = newNode.
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