1 /**************************************************************************
2 Implantation d'un type File d'entiers sous forme chaînée
4 La file est représentée par un doublet tête-queue de pointeurs
6 Le pointeur "tête" contient l'adresse de la tête de la file.
7 Le pointeur "queue" contient l'adresse de la queue de la file.
9 La file vide est représentée par le doublet NULL-NULL
11 Chaque cellule pointe vers la cellule suivante de la file
12 ou vers NULL si on est en queue de file.
14 **************************************************************************/
19 typedef struct cellule
{
21 struct cellule
*suivant
;
26 } File
; /* tête queue */
30 File f
= { NULL
, NULL
};
40 /* ATTENTION: consulter la tête d'une File vide n'a pas de sens */
43 printf("Erreur - file vide\n");
46 return f
.t
->valeur
; /* la File n'est pas modifiée */
49 File
enfiler(element e
, File f
)
51 Cellule
*pc
= (Cellule
*) malloc(sizeof(Cellule
));
56 f
.t
= f
.q
= pc
; /* la cellule créée est à la fois tête et queue */
58 f
.q
= f
.q
->suivant
= pc
; /* la cellule créée est la nouvelle queue */
63 /* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */
67 printf("Erreur - file vide\n");
71 f
= file_vide(); /* la File n'avait plus qu'une seule cellule */
73 f
.t
= f
.t
->suivant
; /* la queue ne change pas */
78 element
defiler2(File
* f
)
80 /* ATTENTION: la File est modifiée */
81 /* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */
85 printf("Erreur - file vide\n");
90 *f
= file_vide(); /* la File n'avait plus qu'une seule cellule */
92 f
->t
= f
->t
->suivant
; /* la queue ne change pas */
97 /********************************************************************/
103 for (i
= 0; i
< 20; i
++)
105 for (i
= 0; i
< 25; i
++)
106 printf("%d\n", defiler2(&p
));
109 /********************************************************************/