Insertion à la fin d'une liste chainée
Résolu
Nowever
Messages postés
88
Statut
Membre
-
fiddy Messages postés 11653 Statut Contributeur -
fiddy Messages postés 11653 Statut Contributeur -
Bonsoir,
voila mon soucis c'est que j'essaie d'insérer un élément à la fin d'une liste chainée mon code ne marche pas je ne vois pas ou est l'erreur, c'est surement que j'ai mal compris le concept quelqu'un peut-il me corriger ou m'expliquer comment faire pour le corriger :) merci
voila mon soucis c'est que j'essaie d'insérer un élément à la fin d'une liste chainée mon code ne marche pas je ne vois pas ou est l'erreur, c'est surement que j'ai mal compris le concept quelqu'un peut-il me corriger ou m'expliquer comment faire pour le corriger :) merci
void insertion(Liste *liste, int nvNombre)
{
Element *nouveau = malloc(sizeof(*nouveau));
while(nouveau->suivant!=NULL)
{
nouveau=nouveau->suivant;
}
nouveau->nombre=nvNombre;
liste->premier = nouveau;
}
A voir également:
- Ajouter un element a la fin d'une liste chainée c
- Liste déroulante excel - Guide
- Fin des zfe - Guide
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Ajouter à l'écran d'accueil iphone - Guide
2 réponses
Bonjour,
Déjà, cela dépend de la structure de données ?
Sinon ton algorithme n'est pas bon.
La logique est plutôt la suivante.
Il te reste juste à faire la partie qui est en commentaire.
Déjà, cela dépend de la structure de données ?
Sinon ton algorithme n'est pas bon.
La logique est plutôt la suivante.
Element *nouveau = malloc(sizeof(*nouveau)); nouveau->suivant = NULL; nouveau->nombre=nvNombre; /*Tu te mets en fin de ta liste "liste", cela dépend de ta structure de données*/ liste->suivant = nouveau;
Il te reste juste à faire la partie qui est en commentaire.
d'abord tu a passé la liste en parametre en valeur pas en adresse
donc il faut la passer en adresse pour qu'il puisse se modifier à savoir
il faut pas modifier le nouveau element "nouveau" on doit utiliser un pointeur auxiliaire Liste *tmp;
ainsi notre code apres une petite modefication :
et finalement tu met RESOLU
donc il faut la passer en adresse pour qu'il puisse se modifier à savoir
void insertion(Liste *liste, int nvNombre)
il faut pas modifier le nouveau element "nouveau" on doit utiliser un pointeur auxiliaire Liste *tmp;
ainsi notre code apres une petite modefication :
void insertion(Liste **liste, int nvNombre)
{
//creeation de l'element
Liste *nouveau = malloc(sizeof(*nouveau));
nouveau->suivant = NULL;
nouveau->nombre=nvNombre;
if(liste!=NULL)
{
//parcourir la liste
Liste *tmp=liste;
while(tmp->suivant!=NULL)
{
tmp=tmp->suivant;
}
tmp->suivant= nouveau;
}
else liste=nouveau;
}
et finalement tu met RESOLU