Problème avec une liste chainée
Bonjour.
Je viens de créer un programme censé demander à l'utilisateur d'entrer les valeurs des éléments d'une liste chainée et les afficher.
Le problème est qu'une fois exécuté, le programme plante lors de la première valeur entrée.
Selon le débogueur, ce serait une erreur de segmentation.
Toute aide est la bienvenue.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
#include <stdlib.h>
#include <stdio.h>
typedef struct element
{
int val;
struct element *next;
}element;
void afficher_liste(element *liste_chainee);
void ajout_fin_liste(element **liste_chainee);
int main(void)
{
element *liste_chainee = NULL;
ajout_fin_liste(&liste_chainee);
afficher_liste(liste_chainee);
return 0;
}
void ajout_fin_liste(element **liste_chainee)
{
int nombre_elements=0, valeur=0;
scanf("%d", &nombre_elements);
element *nouvel_element = (malloc(sizeof(element)));
for(; nombre_elements > 0; nombre_elements--)
{
scanf("%d", &valeur);
nouvel_element->val = valeur;
nouvel_element->next = NULL;
element *temp = *liste_chainee;
while(temp->next != NULL)
{
temp = temp->next;
}
temp->next = nouvel_element;
}
}
void afficher_liste(element *liste_chainee)
{
while(liste_chainee != NULL)
{
printf("%d ", liste_chainee->val);
liste_chainee = liste_chainee->next;
}
} |