Liste chainée: Fonction d'affichage

sda2 Messages postés 4 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 5 mai 2007 - 28 avril 2007 à 14:14
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 - 28 avril 2007 à 15:30
Bonjour à tous et à toutes,

alors j'expose vite fait mon probleme...

je suis entrain d'écrire un programme dans lequel j'ai besoin d'une liste chainée, j'ai ecrit la structure, puis la fonction qui insert un element en queue de liste, mais je n'arrive pas à faire son affichage ...

Je voulais savoir, si quelqu'un pourrait gentillement m'indiquer ce qui ne va pas dans mes fonctions.

Voilà ma structure et les fonctions decrites ci dessus: (desolé je ne sais pas comment inserer des balises de code )

//La structure

typedef struct sliste
{
  int v;
  struct sliste *s;
}Sliste, *Liste;

//Fonction d'insertion

Liste insertion(Liste l, int v)
{
  Liste l1=(Sliste*)malloc(sizeof(Sliste));
  l1->v=v;
  l1->s=NULL;
 
  if(l==NULL)
   return l1;
  else
  {
    (l->s)=l1;
    return l;
  }
}

//Fonction d'affichage (qui marche pas)

void afficheliste(Liste l)
{
  Liste l1=(Sliste*)malloc(sizeof(Sliste));
  l1=l;

 while(l1 != NULL)
 {
     printf("%d \n", l1->v);
     l1 = l1->s;
 }

printf("\n\n");
}

Merci à vous.

2 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 avril 2007 à 15:26
l dans les paramètres de tes fonctions et l1 devrait être des pointeurs:

Liste *insertion(Liste *l, int v)
{
  Liste *l1=(Sliste*)malloc(sizeof(Sliste));
  l1->v = v;
  l1->s = NULL;
 
  if(l==NULL) return l1;
  else
  {
    l->s = l1;
    return l;
  }
}

//Fonction d'affichage (qui marche pas)

void afficheliste(Liste *l)
{
 while(l)
 {
     printf("%d \n", l->v);
     l = l->s;
 }

printf("\n\n");
}

J'ai pas tester mais ça devrait ce rapprocher de ça.

C++ (@++)<!--
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
28 avril 2007 à 15:30
OUPS!!!!
J'avais pas vue que Liste était déjà un pointeur dans la déclaration de ta structure
Retire toute de même le
Liste l1=(Sliste*)malloc(sizeof(Sliste));
de ta fonction afficheliste car sitôt arpès, tu le fait pointer sur l donc on pert la zone (qui est de tout façon, réservé inutilement).

C++ (@++)<!--
Rejoignez-nous