#include #include #include #include typedef struct info { char Nom[9]; char Prenom[9]; int Groupe; }info; struct listes { info donnees; struct listes *suite; }; typedef struct listes liste; void EncoderInfo(info *); void AfficherInfo(info *); int ListeVide(liste *); liste * NouvelleListe(liste *); liste * InsererElementListe(liste *); void AfficherListe(); int main() { liste *info; liste *deb=NULL; int n=0,x=0; info=(liste*)malloc(sizeof(liste)); do { printf("menu\n"); printf("1.Encoder\n"); printf("2.Affichage un element\n"); printf("3.Creer une liste vide\n"); printf("4.Inserer un element\n"); printf("5.Afficher liste\n"); printf("6.Quitter\n"); fflush(stdin); scanf("%d",&n); switch (n) { case 1: info=(liste*)malloc(sizeof(liste)); EncoderInfo(&(info->donnees)); break; case 2: AfficherInfo(&(info->donnees)); break; case 3: if(ListeVide(deb)==0) { deb=NouvelleListe(deb); printf("(^^)...(^^)\n"); } printf("Liste vide\n"); break; case 4:deb=InsererElementListe(deb); break; case 5:AfficherListe(deb); break; case 6:x=1; break; default:break; } } while(x==0); free(info); free(deb); return 0; } void EncoderInfo(info *fiche) { printf("Nom :\n"); fflush(stdin); scanf("%s", fiche->Nom); printf("Prenom :\n"); fflush(stdin); scanf("%s", fiche->Prenom); printf("Groupe :\n"); fflush(stdin); scanf("%d",&((*fiche).Groupe)); } void AfficherInfo(info *fiche) { printf(" %s \n", fiche->Nom); printf(" %s \n", fiche->Prenom); printf(" %d \n", fiche->Groupe); printf("\n\n\n\n\n"); } int ListeVide(liste *deb) { if (deb==NULL) return 1; else return 0; } liste * NouvelleListe(liste *deb) { int a; liste *aliberer=NULL; a=ListeVide(deb); if(ListeVide(deb)==0) while(deb!=NULL) { aliberer=deb; deb=(*deb).suite; free(aliberer); } return NULL; } liste * InsererElementListe(liste *deb) { int trouve=0; liste *parcours,*inserer=NULL,*precedent; parcours=deb; precedent=NULL; inserer=(liste *)malloc(sizeof(liste)); EncoderInfo(&((*inserer).donnees)); while(parcours!=NULL && trouve==0) { if(strcmp((*inserer).donnees.Nom,(*parcours).donnees.Nom)>0) { ; } if(strcmp((*inserer).donnees.Nom,(*parcours).donnees.Nom)<0) { trouve=1; } if(strcmp((*inserer).donnees.Nom,(*parcours).donnees.Nom)==0) { if(strcmp((*inserer).donnees.Prenom,(*parcours).donnees.Prenom)>=0) { ; } else trouve=1; } if(trouve==1); else { precedent=parcours; parcours=((*parcours).suite); } } if(precedent== NULL) { (*inserer).suite=parcours; deb=inserer; } else { (*precedent).suite=inserer; (*inserer).suite=parcours; } return deb; } void AfficherListe(liste *deb) { liste *tmp; tmp=deb; while(tmp!=NULL) { AfficherInfo(&((*tmp).donnees)); tmp=(*tmp).suite; } }