Liste chainées en C

Fermé
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 - 11 mai 2011 à 14:19
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 - 11 mai 2011 à 14:58
Bonjour,
J'essaie de créer une liste chainée qui contiendrait les valeurs de 1 à 9. J'ai réussis à créer la liste pour qu'elle contienne les valeurs, le problème est que quand j'affiche la chaîne, j'obtiens un 0 à la fin de celle ci et le programme plante après l'affichage. Je poste donc mon code, si quelqu'un trouve un problème, qu'il me fasse signe svp ^^

#include <stdio.h>
#include <stdlib.h>
typedef struct element element;
struct element
{
int val;
struct element *suivant;
};
typedef element* liste;

main()

{
liste creer_elt(int val)
{
liste P;
P=(liste)malloc(sizeof(element));
P->val=val;
P->suivant=NULL;
return P;
}
liste ajout_en_tete(liste L, int val)
{
liste P=creer_elt(val);
P->suivant=L;
return P;
}
int i;
liste llist;
for (i=9; i>0; i--)
{
llist=ajout_en_tete(llist, i);
}

void afficherListe(liste llist)
{
element *tmp = llist;
/* Tant que l'on n'est pas au bout de la liste */
while(tmp != NULL)
{
/* On affiche */
printf("%d ", tmp->val);
/* On avance d'une case */
tmp = tmp->suivant;
}
}
afficherListe (llist);
}


7 réponses

Vicking54 Messages postés 89 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 17 mai 2011 26
11 mai 2011 à 14:22
pourquoi tu crées tes sous programmes dans le main ....
0
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 12
11 mai 2011 à 14:25
Pourquoi pas?
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 mai 2011 à 14:54
c'est pas propre et les derniers standard C sont sensé l'interdire.
En plus, ça fait un code pas très lisible, surtout qu'en plus tu n'utilises pas les balises de code pour conserver l'indentation.
0
Vicking54 Messages postés 89 Date d'inscription lundi 11 octobre 2010 Statut Membre Dernière intervention 17 mai 2011 26
11 mai 2011 à 14:28
ben il faut voir mais ca amène des bug bien souvent
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 mai 2011 à 14:29
affiche ton tmp->suivant à chaque fois.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 12
11 mai 2011 à 14:35
Je viens de tester et sa ne change rien, j'ai toujours le 0 en trop et le programme qui plante ensuite.
0
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 298
11 mai 2011 à 14:56
je crois avoir trouvé.
essais de déclarer ainsi :
liste llist=0;
0
linkcr15 Messages postés 362 Date d'inscription mercredi 7 janvier 2009 Statut Membre Dernière intervention 31 mars 2016 12
11 mai 2011 à 14:58
En effet sa marche merci beaucoup =)
0