Les listes( petit programme )

Description

un petit programme ki traite ce l'on appelle une liste
avec un menu de plusieurs choix : insersion au debut de la liste, au milieu de la liste ou a la fin , et aussi pour la suppression d'un element de la liste.
pour toutes informations ou suggestions :
yassou3@fr.fm
bonne chance :)

Source / Exemple :


#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;
                                                              • /
} }

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.