0% ont trouvé ce document utile (0 vote)
46 vues6 pages

Gestion des structures de données en C

Transféré par

hamdi.benrayana
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
46 vues6 pages

Gestion des structures de données en C

Transféré par

hamdi.benrayana
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats TXT, PDF, TXT ou lisez en ligne sur Scribd

************************Les Listes simplement chaînées ***********************

//Declaration fel .h :

typedef struct
{
int num;
char type [20];
int etat;
} wagon;

typedef struct cellule


{
wagon w;
struct cellule *suivant;
} cellule;

typedef struct cellule *liste;

//la saisie de l'enregistrement et l'ajout au debut et a la fin de la liste :

void saisir( wagon *w)


{
printf("*donner les details de la liste*\n");
printf("donner le numero\n");
scanf("%d",&w->num);
printf("donner le type\n");
scanf("%s",w->type);
printf("donner l etat\n");
scanf("%d",&w->etat);
}

liste ajouterdeb(liste l, wagon w)


{
cellule* nouv;
nouv = (cellule*) malloc(sizeof(cellule));
nouv->w=w;
nouv->suivant=NULL;
if(l==NULL)
{
l=nouv;
}
else
{
nouv->suivant=l;
l=nouv;
}

return(l);
}

liste ajouterfin(liste l, wagon w)


{
cellule * nouv, *p;

nouv = (cellule*) malloc(sizeof(cellule));


nouv->w=w;
nouv->suivant=NULL;
if(l==NULL)
{
l=nouv;
}
else
{
p=l;
while(p->suivant!=NULL)
p=p->suivant;

p->suivant = nouv;
}
return(l);
}

//Rechercher dans une liste simplement chainée retourne 1 si existe 0 sinon avec
l'affichage:

int recherche(liste l,int x)


{int existe =0;
struct cellule*tmp;
tmp=l;
while(tmp!=NULL)
{
if (tmp->[Link]==x)
{
existe=1;
printf("le num %d\n",tmp->[Link]);
printf("le type %s\n",tmp->[Link]);
printf("l etat %s\n",tmp->[Link]);

}
tmp=tmp->suivant;
}
return existe;
}

//affichage d'une liste simplement chainée:

void affichage(liste l)
{
while(l!=NULL)
{
printf("%d->",l->[Link]);
printf("%s->",l->[Link]);
printf("%d->",l->[Link]);
l=l->suivant;
}

//supprimer les wagon qui ont l'etat en pannne(=0):

liste Supprimerwagon(liste l)
{
cellule *temp,*sup,*prec;

if (l!=NULL)
{
prec=l;
temp=l->suivant;
while(temp!=NULL)
{
while(temp!=NULL&&temp->[Link]==0)
{
sup=temp;
temp=temp->suivant;
prec->suivant=temp;
free(sup);
}
if (temp!=NULL)
{
prec=temp;
temp=temp->suivant;
}
}
}
else
{
printf("liste vide\n");
}

return l;
}

***********************************PILE*******************************************
//Déclaration:

typedef struct cellule


{
int val ;
struct cellule *suivant;
}cellule;

typedef cellule *pile;

//Fonction tester pile vide:

int pile_vide(pile p)
{
if(p==NULL)
return 1;
else
return 0;
}

//Fonction consulter la sommet de la pile et retoune sa valeur

int consulter(pile p)
{
if(pile_vide(p)==0)
return p->val;
}

//EMPILER:

pile empiler (pile p,int x)


{ pile nouv;

nouv=malloc(sizeof(cellule));
nouv->val=x;
nouv->suivant=p;
p=nouv;
return p;
}

//DEPILER:

pile depiler (pile p)


{ pile suppr;

if(pile_vide(p)==0)
{
suppr=p;
p=p->suivant;
free(suppr);
}
else
{
printf("PILE VIDE !\n);
}

return p;
}

********************************************FILE***********************************
********

//Déclaration:

typedef struct cellule


{
int val ;
struct cellule *suivant;
}cellule;

typedef struct file


{
Cellule *tete;
Cellule *queue;
}file;

//Initialisation de la file:
file initialiser()
{
file f;
[Link]=NULL;
[Link]=NULL;
return f;
}

//File vide :

int file_vide(file f)
{
if(([Link]==NULL)&&([Link]==NULL))
return 1;
else
return 0;
}

//Consulter sommet:

int consulter (file f)


{
return(([Link])->val);
}

//ENFILER:

file enfiler(file f,int x)


{
cellule *nouv;

nouv=malloc(sizeof(cellule));
nouv->val=x;
nouv->suivant=NULL;

if(file_vide(f)==1)
{
[Link]=nouv;
[Link]=nouv;
}
else
{
([Link])->suivant=nouv;
[Link]=nouv;
}
return f;
}

//DEFILER permet de defiler un element en tete et retourne la valeur de l'element


defiler:

int defiler(file *f)


{
int valeur;
if(file_vide(*f)==1)
printf("file vide rien a defiler !\n");
else
{
cellule *elem= f->tete;
valeur=elem->val;
f->tete=elem->suivant;
if(f->tete==NULL)
f->queue=NULL;
free(elem);
}
return valeur;
}

**************************************ABR***************************************
void ParcoursPrefixe(Arbre R)
{
if (R!=NULL)
{
printf("\n Racine = %d", R->X);
ParcoursPrefixe(R->FG);
ParcoursPrefixe(R->FD);
}
}

void ParcoursInfixe(Arbre R)
{
if (R!=NULL)
{
ParcoursInfixe(R->FG);
printf("\n Racine = %d", R->X);
ParcoursInfixe(R->FD);
}
}

void ParcoursPostfixe(Arbre R)
{
if (R!=NULL)
{
ParcoursPostfixe(R->FG);
ParcoursPostfixe(R->FD);
printf("\n Racine = %d", R->X);
}
}

Vous aimerez peut-être aussi