je veux créer une liste (verticale) des noms et prenoms et villes et meme ces 3 elements representent un liste donc c'est une liste (horizontale) de liste mai je trouve un probleme au niveau de l'ajout vertical voila ce que j'ai fait , slv aider moi
typedef struct _ListeDesInvites {
char nom[30];
struct _coordonnees *cor;
struct _ListeDesInvites *suivant;
} invite;
typedef struct _coordonnees {
char id[50];
struct _coordonnees *next;
} cor;
//ajouter les coordonnes d'un invite
void ajout_cor(cor *p, char *chaine)
{
cor *q;
cor *r=Malloc(cor);
strcpy(r->id, chaine);
if(p!=NULL)
{
q=p;
while(q->next!=NULL) q=q->next;
q->next=r;
r->next=NULL;
}
else r->next=p;
}
//inserer au debut
invite * inserer_debut(invite *p, char *chaine)
{
char *intro;
invite *q=Malloc(invite);
strcpy(q->nom, chaine);
printf("\ndonner prenom:");
scanf("%s",intro);
ajout_cor(q->cor,intro);
printf("\ndonner ville");
scanf("%s",intro);
q->suivant=p;
printf("\nfin ajout");
return q;
}
//inserer juste apres p:
void inserer_apres(invite *p, char * chaine)
{
char *intro;
invite *q=Malloc(invite);
strcpy(q->nom, chaine);
printf("\ndonner prenom:");
scanf("%s",intro);
ajout_cor(q->cor,intro);
printf("\ndonner ville");
scanf("%s",intro);
q->suivant=p->suivant;
p->suivant=q;
}
//ajouter un invite a la liste
invite * ajout_invite_ord(invite *premier, char * chaine)
{
/*cor * r=Malloc(cor);
strcpy(r->id,chaine);*/
invite *p1,*p2;
p2=NULL;
p1=premier;
while((p1!=NULL) && (strcmp(chaine,p1->nom)>0))
{
p2=p1;
p1=p1->suivant;
}
if (p2==NULL) premier=inserer_debut(premier,chaine);
else inserer_apres(p2,chaine);
return premier;
}
void afficher(invite * p)
{
cor * q;
while(p!=NULL)
{
printf("\n\n\n");
printf("\nl'identite : %s \t***\t ",p->nom);
q=p->cor;
while(q!=NULL)
{
printf("%s",q->id);
q=q->next;
}
p=p->suivant;
}
}
//main
void main()
{
int reponse=1;
char *intro;
//initialisation de la liste chainée
invite *premier;
premier=NULL;
while(reponse=1)
{
printf("\nvoulez vous ajouter un adherent? ");
scanf("%d",&reponse);
if(reponse==0) { printf("\ncomme vous voullez:)\n"); break;}
if(reponse==1)
{
printf("\nveuillez entrer le nom: ");
scanf("%s",intro);
premier=ajout_invite_ord(premier,intro);
}
}
afficher(premier);
getch();
exit(-1);
}