Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Elemente Hinzufügen | Implementing Data Structures
C-Strukturen
Abschnitt 5. Kapitel 3
single

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.

Aufgabe

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:

  1. Deklaration einer Variablen struct Node* newNode und Erzeugung eines neuen Knotens mit createNode(value).
  2. Überprüfung, ob die Liste leer ist, indem *head == NULL getestet wird.
  3. Falls die Liste leer ist, Zuweisung von newNode an *head.
  4. Falls die Liste nicht leer ist, Deklaration von struct Node* current und Zuweisung von *head.
  5. Durchlaufen der Liste mit einer while-Schleife, bis current->next gleich NULL ist.
  6. Nach Erreichen des letzten Knotens Setzen von current->next = newNode.

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 3
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