j'essaye de modaliser une procedure inverse recursivement , mais j'ai un probleme , quand j'affiche la liste apres l'avoir inversé sa me donne que le premier.
voici mon code et un screenshot apres l'execution.
merci.
#include <stdio.h>
typedef struct noeud {
struct noeud * suiv;
int val;
}noeud;
void insertion (noeud **tete ,int x){ /*ça marche juste pour le debut de la liste*/
noeud * new = malloc(sizeof(*new));
new->val = x;
new->suiv = *tete;
*tete = new;
}
void lecture (noeud *tete){
noeud *ptr = tete;
while (ptr != NULL){
printf("%d\n",ptr->val);
ptr = ptr->suiv;
}
}
static void inverse (noeud **tete,noeud *n, noeud *p, noeud *r){
if (n == NULL){
*tete = r;
}
else{
p = n;
n = n->suiv;
p->suiv = r;
r = p;
*tete = r;
inverse(&tete, n, p, r );
}
}
int main (){
noeud *p = NULL;
insertion(&p,1);
insertion(&p,2);
insertion(&p,3);
lecture(p);
printf("--------------------------------\n");
inverse(&p,p,p,NULL);
lecture(p);
}
Dans l'appel à inverser, tete est déjà un pointeur vers un pointeur. On n'a pas besoin de le dire.
Cela serait équivalent à noeud * * * tete.
D'accord merci
inverser une liste chainée (LLC) recursivement
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Le Tout est souvent plus grand que la somme de ses parties.
Le Tout est souvent plus grand que la somme de ses parties.