79085351501ee4b0d86fcdb2c8309aa7bed1177a
1 /**************************************************************************
2 Implantation contiguë d'un type File d'entiers
4 La File est représentée par une structure:
5 un tableau représente les valeurs
6 un entier représente la position de la tête de la File
7 un entier représente la position de la queue de la File
9 le tableau est exploité de façon circulaire.
10 **************************************************************************/
17 typedef struct { int tete
;
19 element tab
[LONG_FILE
]; } File
;
22 { File f
={0,0}; /* f.tete=f.queue=0 */
26 int est_vide(File f
) { return f
.tete
==f
.queue
; }
28 int est_pleine(File f
) { return (f
.queue
+1)%LONG_FILE
==f
.tete
; }
31 /* ATTENTION: consulter la tête d'une File vide n'a pas de sens */
32 { if (est_vide(f
)) { printf("Erreur - file vide\n"); exit(-1); }
35 File
enfiler(element e
,File f
)
36 { if (est_pleine(f
)) { printf("Erreur - file pleine\n"); exit(-1); }
37 f
.tab
[f
.queue
]=e
; f
.queue
=(f
.queue
+1)%LONG_FILE
;
42 /* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */
43 { if (est_vide(f
)) { printf("Erreur - file vide\n"); exit(-1); }
44 f
.tete
=(f
.tete
+1)%LONG_FILE
;
48 element
defiler2(File
* f
) /*ATTENTION: la File est modifiée */
49 /* ATTENTION: défiler une File vide n'a pas de sens */
51 if (est_vide(*f
)) { printf("Erreur - file vide\n"); exit(-1); }
53 f
->tete
=(f
->tete
+1)%LONG_FILE
;
56 /*************************************************************************/
65 for (i
=0; i
<20; i
++) p
=enfiler(i
,p
);
67 for (i
=0; i
<25; i
++) printf("%d\n",defiler2(&p
));
69 /********************************************************************/