Heim  >  Artikel  >  Backend-Entwicklung  >  Rekursives Einfügen und Durchlaufen verknüpfter Listen in C++

Rekursives Einfügen und Durchlaufen verknüpfter Listen in C++

PHPz
PHPznach vorne
2023-09-10 09:21:13912Durchsuche

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.

Knoten am Ende rekursiv hinzufügen

  • Wenn der Kopf NULL ist → Knoten zum Kopf hinzufügen

  • Ansonsten zum Kopf hinzufügen (Kopf → Weiter)

Rekursiv durch die Knoten iterieren

  • Wenn der Kopf NULL ist → Beenden

  • Andernfalls drucken (Kopf → Weiter)

Beispiel

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

Die verwendete Methode im folgenden Programm wie folgt

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.

Beispiel

#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;
}

Ausgabe

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen