Maison > Article > développement back-end > Insérer et parcourir de manière récursive une liste chaînée en C++
Nous obtenons les valeurs entières utilisées pour former la liste chaînée. La tâche consiste d'abord à insérer puis à parcourir la liste à chaînage unique en utilisant la méthode récursive.
Si la tête est NULL → Ajouter un nœud à la tête
Sinon, ajouter à la tête (tête → suivant)
Si la tête est NULL → Quitter
Sinon imprimer ( tête → suivant )
Entrée− 1 - 2 - 7 - 9 - 10
Sortie
Sortie strong> liste : 1 → 2 → 7 → 9 → 10 → NULL
Input− 12 - 21 - 17 - 94 - 18
Output− Liste chaînée : 12 → 21 → 17 → 94 → 18 → NULL
Dans cette méthode, nous utiliserons des fonctions pour ajouter des nœuds et parcourir une liste chaînée unique et les appeler de manière récursive pour la prochaine entrée.
Prend une struct SLLNode* avec un entier et un pointeur suivant.
Function addtoEnd(SLLNode* head, int data) Obtient le pointeur vers l'en-tête de la liste chaînée et l'entier de la partie données, et ajoute le nœud à la fin de la liste chaînée.
li>Si le pointeur de tête est NULL, la liste est vide, ajoutez maintenant un nouveau nœud et définissez-le comme tête. Ajouter head → next comme NULL. Renvoie un pointeur vers le nœud
Si head n'est pas nul, utilisez head->next = addtoEnd(head->next, data) pour ajouter le nœud à head → next.
Fonction traverseList(SLLNode* head) Parcourt à partir de la tête et imprime chaque valeur.
Si head est NULL, imprimez NULL et revenez
Sinon, imprimez la valeur des données et utilisez traverseList(head->next) pour parcourir la suivante.
Utilisez addtoEnd() dans la liste de création principale et utilisez traverseList() pour imprimer la liste.
#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; }
Si nous exécutons le code ci-dessus, la sortie suivante sera générée
Linked List is : 1 -> 8 -> 56 -> 12 -> 34 -> NULL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!