#include #include typedef struct maillon_s { char valeur; struct maillon_s* suivant; } maillon; typedef struct { maillon* tete; maillon* queue; } file; void enqueue_file(file* f, char valeur) { maillon* nouveau = (maillon*)malloc(sizeof(maillon)); if (nouveau == NULL) { printf("Erreur: allocation memoire\n"); exit(EXIT_FAILURE); } nouveau->valeur = valeur; nouveau->suivant = NULL; if (f->queue == NULL) { f->tete = f->queue = nouveau; } else { f->queue->suivant = nouveau; f->queue = nouveau; } } char dequeue_file(file* f) { if (f->tete == NULL) { printf("Erreur: file vide\n"); return '\0'; } maillon* temp = f->tete; char valeur = temp->valeur; f->tete = f->tete->suivant; if (f->tete == NULL) { f->queue = NULL; } free(temp); return valeur; } int empty_file(file* f) { return f->tete == NULL; } int main(void) { file f = {NULL, NULL}; char ordre[2]; printf("La file attend vos ordres \n > "); while (scanf("%1s", ordre) == 1) { if (ordre[0] == 'q') { printf("Au revoir\n"); break; } else if (ordre[0] == '+') { scanf(" %c", &ordre[1]); enqueue_file(&f, ordre[1]); } else if (ordre[0] == '-') { printf("Dequeue: %c\n", dequeue_file(&f)); } else { printf("Commande invalide\n"); } printf("\nLa file attend vos ordres \n > "); } return EXIT_SUCCESS; }