Les listes( petit programme )

0/5 (5 avis)

Vue 4 803 fois - Téléchargée 271 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
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
22 déc. 2008 à 10:22
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
yeta86 Messages postés 1 Date d'inscription dimanche 18 mars 2007 Statut Membre Dernière intervention 21 décembre 2008
21 déc. 2008 à 16:15
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
williamprotti Messages postés 44 Date d'inscription samedi 15 mars 2003 Statut Membre Dernière intervention 21 mai 2007
1 janv. 2005 à 04:41
Miaouw
boumarsel Messages postés 298 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 9 juillet 2008 1
9 déc. 2004 à 01:02
-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'.
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
6 déc. 2004 à 09:28
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.