1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| #include <stdio.h>
#include <stdlib.h>
typedef struct Element Element;
struct Element
{
int data;
Element* prec;
Element* suiv;
};
typedef struct File File ;
struct File
{
Element *premier;
};
void init(File *ff)
{
Element *nouveau=malloc(sizeof(*nouveau));
ff->premier=nouveau;
nouveau->prec=NULL;
nouveau->suiv=NULL;
}
void enfiler(File *ff,int a)
{
Element *nouveau=malloc(sizeof(*nouveau));
if ((ff==NULL) || (nouveau==NULL))
{
exit(EXIT_FAILURE);
}
else if (ff->premier == NULL)
{
init(ff);
ff->premier->data=a;
}
else
{
ff->premier->prec=nouveau;
nouveau->suiv=ff->premier;
ff->premier=nouveau;
nouveau->prec=NULL;
nouveau->data=a;
}
}
int defiler(File *ff,int *x) //retourne 0 si c'est impossible de défiler 1 sinon
{
Element *adefile=malloc(sizeof(*adefile));
if ((ff==NULL)||(adefile==NULL))
{
exit(EXIT_FAILURE);
}
else if (ff->premier ==NULL)
{
return 0;
}
else
{ adefile=ff->premier;
while (adefile->suiv !=NULL)
{
adefile=adefile->suiv;
}
*x=adefile->data;
adefile->prec->suiv=NULL;
free(adefile);
return 1;
}
}
void afficher(File *ff)
{
Element *actuel=malloc(sizeof(*actuel));
if ((ff=NULL)||(actuel==NULL))
{
exit(EXIT_FAILURE);
}
actuel=ff->premier;
while (actuel->suiv!= NULL)
{
printf("\n%d",actuel->data);
actuel=actuel->suiv;
}
}
int main()
{
File *f=malloc(sizeof(*f));
init(f);
enfiler(f,5);
enfiler(f,4);
enfiler(f,369);
enfiler(f,25);
enfiler(f,18);
enfiler(f,125);
afficher(f);
int a,b,z,y;
z=defiler(f,&a);
y=defiler(f,&b);
afficher(f);
printf("a=%d",a);
printf("b=%d",b);
return 0;
} |
Partager