Liste chainées en C
linkcr15
Messages postés
362
Date d'inscription
Statut
Membre
Dernière intervention
-
linkcr15 Messages postés 362 Date d'inscription Statut Membre Dernière intervention -
linkcr15 Messages postés 362 Date d'inscription Statut Membre Dernière intervention -
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);
}
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);
}
A voir également:
- Liste chainées en C
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Site dangereux liste - Guide
- Liste site streaming illégal - Accueil - Services en ligne
7 réponses
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je viens de tester et sa ne change rien, j'ai toujours le 0 en trop et le programme qui plante ensuite.