Telechargé par ABDELLAH AAZDAG

TD 3 AAZDAG ABDELLAH

publicité
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________________________________________
Téléchargement