Files
DEV/DEV.1.1/Piles_et_Files/fonct_file.c
Emmanuel Srivastava 4071ce2277 update
2025-01-27 20:32:32 +01:00

71 lines
1.5 KiB
C

#include <stdio.h>
#include <stdlib.h>
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;
}