- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <errno.h>
- struct famille
- {
- char nom[20];
- char prenom[20];
- int years;
- struct famille *next;
- }*fam;
-
- struct famille *sauv;
-
- void insereraudebut(struct famille *p);
- void insereraumilieu(struct famille *p);
- void insereralafin(struct famille *p);
- void supprimer(struct famille*p);
- void insereraudebut(struct famille *p)
- {
- p->next=fam;
- fam=p;
- }
-
-
- void insereraumilieu(struct famille *p)
- {
- struct famille*suc,*pred;
- suc=fam;
- while(suc &&(p->years>suc->years))
- {
- pred=suc;
- suc=suc->next;
- }
- p->next=pred->next;
- pred->next=p;
- }
-
-
- void insereralafin(struct famille *p)
- {
- if(fam==NULL) fam=p;
- else
- {
- sauv=fam;
- while(sauv->next!=NULL)
- sauv=sauv->next;
- sauv->next=p;
- }
- }
-
-
- void main()
- {
- struct famille *p;
- fam=(struct famille *)malloc(sizeof(struct famille));
- fam=NULL;
- sauv=(struct famille *)malloc(sizeof(struct famille));
- char n;
- while(1)
- {
- clrscr();
- p=(struct famille *)malloc(sizeof(struct famille));
- p->next=NULL;
- printf("\n");
- printf("******************MENU GENERAL*********************\n");
- printf("<1>voir la liste\n");
- printf("<2>entrer un element au debut de liste\n");
- printf("<3>entrer un element au milieu de liste\n");
- printf("<4>entrer un element a la fin de liste\n");
- printf("<5>supprimer un element\n");
- printf("<6>quitter\n");
- printf("***************************************************\n");
-
- printf("saisir votre choix: ");
- scanf("%s",&n);
-
- switch(n)
- {
- case '1':
- {
- sauv=(struct famille *)malloc(sizeof(struct famille));
- sauv=fam;
- while(sauv)
- {
- printf("nom :%s\n",sauv->nom);
- printf("prenom:%s\n",sauv->prenom);
- printf("annee de naissance:%d\n",sauv->years);
- printf("\n");
- sauv=sauv->next;
- }
- getch();
- break;
- }
-
- case '2':
- {
- printf("saisir le nom:");
- scanf("%s",p->nom);
- printf("saisir le prenom:");
- scanf("%s",p->prenom);
- printf("saisir l'annee de naissance:");
- scanf("%d",&p->years);
- insereraudebut(p);
- break;
- }
-
- case '3':
- {
- printf("saisir le nom:");
- scanf("%s",p->nom);
- printf("saisir le prenom:");
- scanf("%s",p->prenom);
- printf("saisir l'annee de naissance:");
- scanf("%d",&p->years);
- insereraumilieu(p);
- break;
- }
-
- case '4':
- {
-
- printf("saisir le nom:");
- scanf("%s",p->nom);
- printf("saisir le prenom:");
- scanf("%s",p->prenom);
- printf("saisir l'annee de naissance:");
- scanf("%d",&p->years);
- insereralafin(p);
- break;
- }
-
- case '5':
- {
- printf("saisir le nom:");
- scanf("%s",p->nom);
- printf("saisir le prenom:");
- scanf("%s",p->prenom);
- printf("saisir l'annee de naissance:");
- scanf("%d",&p->years);
- supprimer(p);
- break;
- }
-
- case '6': exit(0);
-
- }
- }
- free(sauv);
- free(fam);
- free(p);
- }
-
- /* void insereraumilieu(struct famille *p)
- {
- struct famille *tmp;
- tmp=(struct famille *)malloc(sizeof(struct famille));
- sauv=fam;
- while(sauv->next!=NULL)
- {
- if((tmp->years>p->years)&&(sauv->years<p->years))
- {
- p->next=sauv->next;
- sauv->next=p;
- break;
- }
- tmp=sauv;
- sauv=sauv->next;
- }
- free(tmp);
- }*/
- void supprimer(struct famille*p)
- {
- struct famille*suc,*pred;
- suc=fam;
- if(suc->years==p->years) fam=fam->next;
- //free(fam->next);
- /*else
- {
- while(suc!=NULL)
- {
- pred=suc;
- suc=suc->next;
- }
- suc=pred;
- if(suc->years==p->years)
- free(suc);
- }
- */
- else
- {
- while(suc && (p->years!=suc->years))
- {
- pred=suc;
- suc=suc->next;
- }
-
- pred->next=suc->next;
- /****oubien,on peut faire******
- //suc=suc->next;
- //pred->next=suc;
- *******************************/
- }
- }
-
-
-
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <errno.h>
struct famille
{
char nom[20];
char prenom[20];
int years;
struct famille *next;
}*fam;
struct famille *sauv;
void insereraudebut(struct famille *p);
void insereraumilieu(struct famille *p);
void insereralafin(struct famille *p);
void supprimer(struct famille*p);
void insereraudebut(struct famille *p)
{
p->next=fam;
fam=p;
}
void insereraumilieu(struct famille *p)
{
struct famille*suc,*pred;
suc=fam;
while(suc &&(p->years>suc->years))
{
pred=suc;
suc=suc->next;
}
p->next=pred->next;
pred->next=p;
}
void insereralafin(struct famille *p)
{
if(fam==NULL) fam=p;
else
{
sauv=fam;
while(sauv->next!=NULL)
sauv=sauv->next;
sauv->next=p;
}
}
void main()
{
struct famille *p;
fam=(struct famille *)malloc(sizeof(struct famille));
fam=NULL;
sauv=(struct famille *)malloc(sizeof(struct famille));
char n;
while(1)
{
clrscr();
p=(struct famille *)malloc(sizeof(struct famille));
p->next=NULL;
printf("\n");
printf("******************MENU GENERAL*********************\n");
printf("<1>voir la liste\n");
printf("<2>entrer un element au debut de liste\n");
printf("<3>entrer un element au milieu de liste\n");
printf("<4>entrer un element a la fin de liste\n");
printf("<5>supprimer un element\n");
printf("<6>quitter\n");
printf("***************************************************\n");
printf("saisir votre choix: ");
scanf("%s",&n);
switch(n)
{
case '1':
{
sauv=(struct famille *)malloc(sizeof(struct famille));
sauv=fam;
while(sauv)
{
printf("nom :%s\n",sauv->nom);
printf("prenom:%s\n",sauv->prenom);
printf("annee de naissance:%d\n",sauv->years);
printf("\n");
sauv=sauv->next;
}
getch();
break;
}
case '2':
{
printf("saisir le nom:");
scanf("%s",p->nom);
printf("saisir le prenom:");
scanf("%s",p->prenom);
printf("saisir l'annee de naissance:");
scanf("%d",&p->years);
insereraudebut(p);
break;
}
case '3':
{
printf("saisir le nom:");
scanf("%s",p->nom);
printf("saisir le prenom:");
scanf("%s",p->prenom);
printf("saisir l'annee de naissance:");
scanf("%d",&p->years);
insereraumilieu(p);
break;
}
case '4':
{
printf("saisir le nom:");
scanf("%s",p->nom);
printf("saisir le prenom:");
scanf("%s",p->prenom);
printf("saisir l'annee de naissance:");
scanf("%d",&p->years);
insereralafin(p);
break;
}
case '5':
{
printf("saisir le nom:");
scanf("%s",p->nom);
printf("saisir le prenom:");
scanf("%s",p->prenom);
printf("saisir l'annee de naissance:");
scanf("%d",&p->years);
supprimer(p);
break;
}
case '6': exit(0);
}
}
free(sauv);
free(fam);
free(p);
}
/* void insereraumilieu(struct famille *p)
{
struct famille *tmp;
tmp=(struct famille *)malloc(sizeof(struct famille));
sauv=fam;
while(sauv->next!=NULL)
{
if((tmp->years>p->years)&&(sauv->years<p->years))
{
p->next=sauv->next;
sauv->next=p;
break;
}
tmp=sauv;
sauv=sauv->next;
}
free(tmp);
}*/
void supprimer(struct famille*p)
{
struct famille*suc,*pred;
suc=fam;
if(suc->years==p->years) fam=fam->next;
//free(fam->next);
/*else
{
while(suc!=NULL)
{
pred=suc;
suc=suc->next;
}
suc=pred;
if(suc->years==p->years)
free(suc);
}
*/
else
{
while(suc && (p->years!=suc->years))
{
pred=suc;
suc=suc->next;
}
pred->next=suc->next;
/****oubien,on peut faire******
//suc=suc->next;
//pred->next=suc;
*******************************/
}
}