probleme d affichage une liste chainee

  • Auteur de la discussion jackman
  • Date de début

jackman

Habitué
salut

j ai un probleme lors d affichage d une liste chaine. le probleme lors d inserer les valeur par exemple j insere 5 et 7 et 8 dans l affichage je trouve 8 8 8
la valeur 8 se repete 3 fois :

voici mon script d affichage liste chainée :

void affichage(liste *adl)
{
Tnoeud *p ;
p=adl->debut ;
do
{
printf("%d",x);
p=p->suiv ;
}
while((p->suiv)!=NULL);
}

s il y a quelqu un peut corriger la procedure affichage .

merci d avance
 

boub popsyteam

Grand Maître
1/ Il manque les balises
Code:
 (l'icone CPP dans la fenetre d'edition)

2/ Es tu sur que ce n'est pas ta fonction d'insertion qui merdouille ?
 

jackman

Habitué
voici la procedure inserer :
void inserer ( liste *adl , int x )
{
Tnoeud *p = creer_noeud(x);

if (p)
{
adl->debut = adl->fin = p ;
adl->lg+=1;}
else
{
adl->fin->suiv = p;
adl->fin = p ;
adl->lg+=1;
}
}
 

jackman

Habitué
voici mon programme :
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct tnoeud {
int ele ;

struct tnoeud *suiv ;

} Tnoeud ;

typedef struct {

Tnoeud *debut ;
Tnoeud *fin ;
int lg ;

}liste ;

liste *adl ;
int n,i,x,lg;
char rep ;
/*creer un noeud */

Tnoeud * creer_noeud (int x)
{
Tnoeud *p ;

p= (Tnoeud * )malloc (sizeof(Tnoeud));

if (p)
{
p->ele = x ;
p->suiv = NULL ;
}
return p ;

}

void initialiser (liste *adl)
{

adl->debut=NULL ;
adl->fin=NULL;
adl->lg = 0 ;
}

void inserer ( liste *adl , int x )
{
Tnoeud *p = creer_noeud(x);

if (p)
{
adl->debut = adl->fin = p ;
adl->lg+=1;}
else
{
adl->fin->suiv = p;
adl->fin = p ;
adl->lg+=1;
}

printf("la longeur est : %d \n",adl->lg);
}
void affichage(liste *adl)
{
Tnoeud *p ;
p=adl->debut ;
do
{
printf("%d",x);
p=p->suiv ;
}
while((p->suiv)!=NULL);
}

void main ()
{
clrscr();

/* apel fonction inserer*/
initialiser(adl);
do{
printf("entrer une valeur : ");
scanf("%d",&x);
inserer(adl,x);
printf("voulez vous inserer: ");
scanf("%s",&rep);
}
while(rep=='o');
/*affichage*/

affichage(adl);

getch();

}



 

boub popsyteam

Grand Maître


Celle là dans la fenetre d'edition:
Vous devez être connecté pour voir les images.


Ca rends le code plus lisible ;)

[cpp]
ex de code ...
[/cpp]

Sinon, pourrais tu nommer tes variables de façon plus explicite ?
 

jackman

Habitué
mais j ai donner mon programme
je pense maintenant tu vas mieu comprendre
 

jackman

Habitué
je pense mon programme est facile a comprendre parce que j ai utilise des variable simple mais j ai le probleme sur la procedure affichage masi je n ai pas encore trouver la solution
 

KangOl

Grand Maître
édite tes messages et rajoutes balises
Code:
 sinon je ferme !
 

boub popsyteam

Grand Maître
Dans ta fonction affichage, ton 'x' tu le recuperes par miracle ? :ange:

Mais STP edit tes posts et rajoutes la balise CPP sus citée autour de ton code !
 

jackman

Habitué
*adl : c est l adresse de la liste qui pint au debut la liste
x : c est element inserer .
la liste contient (*debut , *fin , lg (la longueur)).

*p : c est le nouveau noeud creer

 

KangOl

Grand Maître
on te demande pas de décrire ton code (pour ca il y les commentaires), mais de l'entouré des bonne balises
 

jackman

Habitué
vraiment je n ai pas bien compris se que vous voulez
mais stp je veux juste de me corriger ma procedure de l affichage c est tout .
 

jackman

Habitué
[cpp]#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct tnoeud {
int ele ;

struct tnoeud *suiv ;

} Tnoeud ;

typedef struct {

Tnoeud *debut ;
Tnoeud *fin ;
int lg ;

}liste ;

liste *adl ;
int n,i,x,lg;
char rep ;
/*creer un noeud */

Tnoeud * creer_noeud (int x)
{
Tnoeud *p ;

p= (Tnoeud * )malloc (sizeof(Tnoeud));

if (p)
{
p->ele = x ;
p->suiv = NULL ;
}
return p ;

}

void initialiser (liste *adl)
{

adl->debut=NULL ;
adl->fin=NULL;
adl->lg = 0 ;
}

void inserer ( liste *adl , int x )
{
Tnoeud *p = creer_noeud(x);

if (p)
{
adl->debut = adl->fin = p ;
adl->lg+=1;}
else
{
adl->fin->suiv = p;
adl->fin = p ;
adl->lg+=1;
}

printf("la longeur est : %d \n",adl->lg);
}
void affichage(liste *adl)
{
Tnoeud *p ;
p=adl->debut ;

do{
printf("%d",x);
p=p->suiv ; }
while((p)!=NULL);
}

void main ()
{
clrscr();

/* apel fonction inserer*/
initialiser(adl);
do{
printf("entrer une valeur : ");
scanf("%d",&x);
inserer(adl,x);
printf("voulez vous inserer: ");
scanf("%s",&rep);
}
while(rep=='o');
/*affichage*/

affichage(adl);

getch();

}
[/cpp]
 

jackman

Habitué
maintenant j ai fais ce que tu m as demande maintenant stp essay de me corriger mon programme
 

KangOl

Grand Maître
et dis donc, je suis pas ton chien !
un peu de respect :o

regarde un peu ta méthode d'affichage et commente la :o
 

jackman

Habitué
non je n ai pas fait expret mais je demande avec gentiment de m aider stp

merci d avance
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 142
Messages
6 718 245
Membres
1 586 408
Dernier membre
manojsunia
Partager cette page
Haut