Les listes( petit programme )

Soyez le premier à donner votre avis sur cette source.

Vue 4 496 fois - Téléchargée 258 fois

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

Ajouter un commentaire Commentaires
Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
Voilà donc quelqu'un qui répond après 4 ans et 11 jours pour me faire la morale.
C très rigolo ces forums, un jour je trouverais un commentaire de mon fils entrain de me dire "un peu de respect père stp" :D :D
Messages postés
1
Date d'inscription
dimanche 18 mars 2007
Statut
Membre
Dernière intervention
21 décembre 2008

je crois que l'éssentiel c'est de participer chacun avec son niveau et toi Mr boumarsel je sais pas si té un pro de la programmation reste a vérifier mais meme si tu l'es tu a été débutant donc un peu de modestie.Bon courage a celui qui a déposé cette source te décourage surtout pas
Messages postés
44
Date d'inscription
samedi 15 mars 2003
Statut
Membre
Dernière intervention
21 mai 2007

Miaouw
Messages postés
298
Date d'inscription
jeudi 12 juin 2003
Statut
Membre
Dernière intervention
9 juillet 2008
1
-si tu t'adresses au debutants en langage C, tu as dû mettre des commentaires et explications ds tn code.
-si tu t'adresses au pro de la programmation, assure-toi qu'ils n'ont rien à faire d'1e telle source.
-1 petit conseil, la prochaine fois essai de poser une source plus interessante au lieu de nous faire des copier/coller des exemples du cours de 'listes chainées'.
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
yassine_java se met au C console.
jette donc un oeil au niveau des templates:
exemple:
http://www.cppfrance.com/code.aspx?ID=18584

Bonne prog
++
Magicalement

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.