//fction servant a enlever une personne du repertoire
void retirer (struct fiche **pp_liste)
{ char tel [T+1];
char cod_depart[T+1];
char nom[N+1];
struct fiche *ptr,*ptr2;
int fin=0;
int r;
//on initialise ptr avec l'adresse de la 1ere structure
ptr=*pp_liste;
printf("\n entrer le nom de la personne a retirer: ");
scanf("%s",nom);
// if(nom!=" ")
{
r=comp(nom,(*ptr).p.nom);
if(r==1) fin=1;
//on va maintenant cherché si la personne est présente dans l'agenda
while(fin==0){
if((*ptr).p_suivant==NULL)
{
fin=1;
r=comp(nom,(*ptr).p.nom);
}else{
r=comp(nom,(*ptr).p_suivant->p.nom);
if (r==1)
fin=1;
else
//on passe à la structure suivante...
ptr=(*ptr).p_suivant;
}
}
}else{
//on relie la fiche precedente a la suivante
ptr2=(*ptr).p_suivant->p_suivant;
//onlibere la memoire
free((*ptr).p_suivant);
(*ptr).p_suivant=ptr2;
char nom [N+1];
char tel [T+1];
char rue[N+1],cod_postal[4],ville[N+1];
char jour[2],mois[2],annee[4];
struct date dat_naiss;
struct adresse adress;
char mail [N+1];
char cod_depart [T+1];
int fin=0;
int r;
//ce pointeur designera la nouvelle fiche
struct fiche *p_nouv;
struct fiche *ptr;
fin=0;
printf("\n entrer le nom de la personne: ");
scanf("%s",nom);
printf("\n entrer son numero de telephone: ");
scanf("%s",tel);
printf("\n entrer son adresse: \n rue: ");
scanf("%s",adress.rue);
printf("\n code postal: ");
scanf("%s",adress.cod_postal);
printf("\n ville: ");
scanf("%s",adress.ville);
printf("\n entrer sa date de naissanse: \njour/mois/annee: ");
scanf("%s/%s/%s",dat_naiss.jour,dat_naiss.mois,dat_naiss.annee);
printf("\n entrer son email: ");
scanf("%s",mail);
printf("\n entrer son code de departement: ");
scanf("%s",cod_depart);
//initialisation
ptr=*pp_liste;
//on cherche si la personne n'est pas deja dans le repertoire
while (fin==0)
{
if(ptr==NULL) fin=1;
else {
r=comp(nom,(*ptr).p.nom);
if(r==1) fin=1;
else {
if ((*ptr).p_suivant==0) fin=1;
ptr=(*ptr).p_suivant;
}
}
}
if(r==1)
{
printf("\n entree deja presente \n");
}
else{
//on alloue de la memoire pour une nouvelle fiche
p_nouv=new(struct fiche);
//on relie cette vouvelle fiche a la suivante et on change *pp_liste qui doit rester au sommet
void quitter (struct fiche **pp_liste)
{int fin=0;
int cntfree=0;
struct fiche *ptr;
struct fiche *ptr2;
ptr=*pp_liste;
if(*pp_liste==NULL)
{//aucune entree
fin=1;
}
while(fin==0)
{//on va liberer tout les espace memoires allouees
if ((*ptr).p_suivant==0) fin=1;
ptr2=(*ptr).p_suivant;
free(ptr);
ptr=ptr2;
cntfree++;
}
printf("\n\n le nombre des zones liberee: %d \n\n A bientot....",cntfree);
getchar();
getchar();
}
void main()
{
int fin=0;
int rep;
//ce pointeur va pointer vers la 1ere fiche de la pile donc la derniere
struct fiche *p_liste=NULL;
clrscr();
while(fin==0)
{ printf("\n Que voulez vous faire?\n\t1-ajouter une personne\n\t2-Afficher le repertoire\n\t3-retirer une entree\n\t4-Trier les entrees\n\t0-Quitter\nvotre choix: ");
scanf("%d",&rep);
switch(rep)
{
case 1:ajouter(&p_liste);
break;
case 2:afficher(p_liste);
break;
case 3:retirer(&p_liste);
break;
case 4:trier(&p_liste);
break;