Maison > développement back-end > C++ > Insérer et parcourir de manière récursive une liste chaînée en C++

Insérer et parcourir de manière récursive une liste chaînée en C++

PHPz
Libérer: 2023-09-10 09:21:13
avant
942 Les gens l'ont consulté

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.

Ajouter un nœud récursivement à la fin

  • Si la tête est NULL → Ajouter un nœud à la tête

  • Sinon, ajouter à la tête (tête → suivant)

Parcourir récursivement les nœuds

  • Si la tête est NULL → Quitter

  • Sinon imprimer ( tête → suivant )

Exemple

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

La méthode utilisée dans le programme suivant Comme suit

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.

Exemple

#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;
}
Copier après la connexion

Output

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
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal