Nom et Prenom Filiére CNE Apogee AAZDAG ABDELLAH SMI-S4 D139159750 21036295 TD3 – SRUCTURE DE DONNEE Exercice 1 : Le code source : #include <stdlib.h> #include <stdio.h> #include <string.h> typedef struct personne { char nom[20]; char prenom[20]; int age; struct personne * suiv; }personne; personne * Initialiser (){ return NULL; } void Afficher(struct personne *tete) {int i=0; personne *temp=tete; printf("\t\t******************************************************\n"); while (temp != NULL) { printf("\n\t\t_________________ personne number %d ___________________\n",i++); printf("\t\t Nom: %s\t Prenom: %s\t Age: %d an(s)\n",temp->nom,temp->prenom,temp->age); temp = temp->suiv; printf("\n\t\t___________________________________________________________\n"); } printf("\t\t******************************************************\n"); } personne *insert_debut(personne *tete) { personne *element=malloc(sizeof(personne)); if (element==NULL){ printf(" Allocation échouée"); exit(1); } printf("\n saisir le nom :"); scanf("%s",element->nom); printf("\n saisir Prenom :"); scanf("%s",element->prenom); printf("saisir l age :"); scanf("%d",&element->age); element->suiv=tete; tete=element; return tete; } personne * insert_fin(personne* tete){ personne*P =tete; if (tete==NULL){ tete=insert_debut(tete);} else{ personne *element=malloc(sizeof(personne)); if (element==NULL) { printf("pas d espace memoire !!"); exit(1); } while(P->suiv!=NULL){ P= P->suiv; } printf("\n saisir le nom :"); scanf("%s",element->nom); printf("\n saisir Prenom :"); scanf("%s",element->prenom); printf("saisir l age :"); scanf("%d",&element->age); P->suiv=element; element->suiv=NULL; } return tete; } personne * insert_position(personne *tete,int n){ personne *element=malloc(sizeof(personne)); personne *P=tete; personne *tmp=NULL; int i=1; if(element==NULL){exit(1);} if (tete==NULL||n==0) { return insert_debut(tete); } else { printf("\n saisir le nom : "); scanf("%s",element->nom); printf("\n saisir Prenom : "); scanf("%s",element->prenom); printf("saisir l age : "); scanf("%d",&element->age); while((i<n)||(P->suiv==NULL)){ P=P->suiv; i++; } tmp=P->suiv; P->suiv=element; element->suiv=tmp; return tete; }} /* Chercher dans la liste */ int Chercher(personne *tete,char *nom) { int pos= -1; personne *temp=tete; while (temp != NULL) { pos++; if (strcmp(temp->nom,nom)==0) { return pos; } temp=temp->suiv; } return pos; } /*Supprimer un élément de la liste*/ personne *Suppression(personne *tete,char nom[50]) { personne *P = tete; personne *Psuiv = tete->suiv; int pos = Chercher(tete, nom); if(pos == -1) { printf(" L'élément à supprimer n'est pas dans laliste"); return tete; } else if(pos == 0) { free(P); return Psuiv; } else { int i = 1; while (i < pos ) { P = Psuiv; Psuiv = Psuiv->suiv; i++; } P->suiv = Psuiv->suiv; free (Psuiv); return tete; } } void Modification(personne *tete,char nom[50]) { int pos = Chercher(tete,nom); if ( pos == -1) { printf("L'élément que vous cherchez n'est pas dans la liste"); } else { personne *temp=tete; while( temp != NULL) { if(strcmp(temp->nom,nom)==0 ) { printf("\n saisir le nom : "); scanf("%s",temp->nom); printf("\n saisir Prenom : "); scanf("%s",temp->prenom); printf("saisir l age : "); scanf("%d",&temp->age); } temp=temp->suiv; } } } void menu() { /*Le menu */ system("cls"); printf("\n\t\t****************************************************\n"); printf("\t\t** Programme qui permet de geree une liste chainee**\n"); printf("\t\t****____________________________________________****\n\n"); printf("\t\t\t fait par AAZDAG ABDELLAH \n"); printf("\t\t****____________________________________________****\n"); printf("\t\t\t\t## MENU ##\n\n\n"); printf("\t\t\tchoix 1-Inserer un element au debut\n"); printf("\t\t\tchoix 2-Inserer un element devant une position\n"); printf("\t\t\tchoix 3-Inserer un element a la fin de la liste\n"); printf("\t\t\tchoix 4-Chercher un element donne\n"); printf("\t\t\tchoix 5-Supprimer un element donne\n"); printf("\t\t\tchoix 6-Modifier un element donne\n"); printf("\t\t\tchoix 7-Afficher la liste\n"); printf("\t\t\tchoix 8-Quitter le programme\n"); printf("\t\t****************************************************\n\n\n"); } int main() { char nom[50]; int position; /*Initialiser la liste */ personne * tete = Initialiser(); char choix; do{ menu(); printf("\t\t Entrer votre choix : "); choix = getchar(); switch(choix) { case '1' : tete = insert_debut(tete); break; case '2' : printf("Entrer une position : "); scanf("%d",&position); tete =insert_position(tete,position); break; case '3' : tete = insert_fin(tete); break; case '4' : printf("Entrer le nom : "); scanf("%s",nom); position =Chercher(tete,nom); if ( position==-1) { printf("element n'exist pas dans la list \n"); }else { printf("L'element Existe dans la liste a la position : (%d) \n", position); } break; case '5' : printf("Entrer le nom : "); scanf("%s",nom); tete = Suppression(tete,nom); break; case '6' : printf("\nSaisir le nom de personne a modifier : \n"); printf("Entrer le nom : "); scanf("%s",nom); Modification(tete,nom); case '7' : Afficher(tete); break; case '8' : printf("vous avez choisi de quitter le programme \n"); break; default : printf("Votre choix n'est pas valide \n"); break; } system("pause"); getchar(); }while (choix != '8'); } Les testes de tous les fonction : Initialiser () Le programme intialiser automatiqument la list au debut du programme principale MENU() InsertDebut() AFFICHAGE DE RESULTAT Choix 1 : affichage du resultat : InsertFin() Choix 3 : le resultat : (j’ai utiliser la fonction afficher choix 7 ) : InsertPos() LA liste Avant l’ajout : Choix 2 : RESULTAT DE CHOIX 2 : Suppression() suppristion de L’element dont la valeur du champ nom= « NEW » RESULTAT : Chercher() Cherchons l’élément dont le nom= « AAZDAG » Modification() Modifions L’élément dont le nom= «PERSONNE » en affictons les valeurs {Nom : AIT , Prenom : ALI , Age :22 } : ____________________________________FIN________________________________________