Heim > Artikel > Backend-Entwicklung > Rekursives Einfügen und Durchlaufen verknüpfter Listen in C++
Wir erhalten die ganzzahligen Werte, die zur Bildung der verknüpften Liste verwendet werden. Die Aufgabe besteht darin, zuerst die einfach verknüpfte Liste einzufügen und sie dann mithilfe der rekursiven Methode zu durchlaufen.
Wenn der Kopf NULL ist → Knoten zum Kopf hinzufügen
Ansonsten zum Kopf hinzufügen (Kopf → Weiter)
Wenn der Kopf NULL ist → Beenden
Andernfalls drucken (Kopf → Weiter)
Eingabe− 1 - 2 - 7 - 9 - 10
Ausgabe
Ausgabe stark>−. Link Ed-Liste: 1 → 2 → 7 → 9 → 10 → NULL
Eingabe− 12 - 21 - 17 - 94 - 18
Ausgabe− Verknüpfte Liste: 12 → 21 → 17 → 94 → 18 → NULL
In dieser Methode verwenden wir Funktionen, um Knoten hinzuzufügen und einfach verknüpfte Listen zu durchlaufen und sie für die nächste Eingabe rekursiv aufzurufen.
Akzeptiert eine Struktur SLLNode* mit einer Ganzzahl und einem nächsten Zeiger.
Funktion addtoEnd(SLLNode* head, int data) Ruft den Zeiger auf den Kopf der verknüpften Liste und die Ganzzahl des Datenteils ab und fügt den Knoten am Ende der verknüpften Liste hinzu.
li>Wenn der Kopfzeiger NULL ist, ist die Liste leer. Fügen Sie nun einen neuen Knoten hinzu und legen Sie ihn als Kopf fest. Füge head → next als NULL hinzu. Gibt einen Zeiger auf den Knoten zurück
Wenn head nicht null ist, verwenden Sie head->next = addtoEnd(head->next, data), um den Knoten zu head → next hinzuzufügen.
Function traverseList(SLLLNode* head) Durchläuft beginnend mit head und druckt jeden Wert.
Wenn head NULL ist, geben Sie NULL aus und geben Sie
zurück. Andernfalls drucken Sie den Datenwert aus und verwenden Sie traverseList(head->next), um den nächsten zu durchlaufen.
Verwenden Sie addtoEnd() in der Haupterstellungsliste und verwenden Sie traverseList(), um die Liste zu drucken.
#include <bits/stdc++.h> using namespace std; struct SLLNode { int data; SLLNode* next; }; SLLNode* addtoEnd(SLLNode* head, int data){ if (head == NULL){ SLLNode *nodex = new SLLNode; nodex->data = data; nodex->next = NULL; return nodex; } else{ head->next = addtoEnd(head->next, data); } return head; } void traverseList(SLLNode* head){ if (head == NULL){ cout <<"NULL"; return; } cout << head->data << " -> "; traverseList(head->next); } int main(){ SLLNode* head1 = NULL; head1 = addtoEnd(head1, 1); head1 = addtoEnd(head1, 8); head1 = addtoEnd(head1, 56); head1 = addtoEnd(head1, 12); head1 = addtoEnd(head1, 34); cout<<"Linked List is :"<<endl; traverseList(head1); return 0; }
Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert
Linked List is : 1 -> 8 -> 56 -> 12 -> 34 -> NULL
Das obige ist der detaillierte Inhalt vonRekursives Einfügen und Durchlaufen verknüpfter Listen in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!