X-Git-Url: https://git.piment-noir.org/?p=Algorithmic_C.git;a=blobdiff_plain;f=TP5%2Fexo_c6%2Ffile_chaine_correction.c;h=949f7e4a27cc21cf44aa81f8e770d76a9ffbea39;hp=f3c336957b54526951c9f0019a210b0c5026ba40;hb=67b4409586ad416765bb6304cf50b576df64dfcb;hpb=c31b68a4e24e74a20f09aa1d7b9906b58d4aa255 diff --git a/TP5/exo_c6/file_chaine_correction.c b/TP5/exo_c6/file_chaine_correction.c index f3c3369..949f7e4 100644 --- a/TP5/exo_c6/file_chaine_correction.c +++ b/TP5/exo_c6/file_chaine_correction.c @@ -14,84 +14,96 @@ ou vers NULL si on est en queue de file. **************************************************************************/ #include #include - + typedef int element; -typedef struct cellule {element valeur; - struct cellule *suivant; } Cellule; - -typedef struct file { Cellule *t, *q; } File; /* tête queue */ +typedef struct cellule { + element valeur; + struct cellule *suivant; +} Cellule; + +typedef struct file { + Cellule *t, *q; +} File; /* tête queue */ File file_vide(void) -{ - File f={NULL,NULL}; - return f; +{ + File f = { NULL, NULL }; + return f; } int est_vide(File f) { - return !f.t; + return !f.t; } element tete(File f) /* ATTENTION: consulter la tête d'une File vide n'a pas de sens */ { - if (est_vide(f)) {printf("Erreur - file vide\n"); exit(-1); } - return f.t->valeur; /* la File n'est pas modifiée */ + if (est_vide(f)) { + printf("Erreur - file vide\n"); + exit(-1); + } + return f.t->valeur; /* la File n'est pas modifiée */ } -File enfiler(element e,File f) +File enfiler(element e, File f) { - Cellule *pc=(Cellule *)malloc(sizeof(Cellule)); - pc->valeur=e;pc->suivant=NULL; - - if (est_vide(f)) - f.t=f.q=pc; /* la cellule créée est à la fois tête et queue */ - else - f.q=f.q->suivant=pc; /* la cellule créée est la nouvelle queue */ - return f; + Cellule *pc = (Cellule *) malloc(sizeof(Cellule)); + pc->valeur = e; + pc->suivant = NULL; + + if (est_vide(f)) + f.t = f.q = pc; /* la cellule créée est à la fois tête et queue */ + else + f.q = f.q->suivant = pc; /* la cellule créée est la nouvelle queue */ + return f; } File defiler(File f) /* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */ { - Cellule *pc=f.t; - if (est_vide(f)) - { - printf("Erreur - file vide\n"); - exit(-1); - } - if (f.t==f.q) f=file_vide(); /* la File n'avait plus qu'une seule cellule */ - else f.t=f.t->suivant; /* la queue ne change pas */ - free(pc); - return f; + Cellule *pc = f.t; + if (est_vide(f)) { + printf("Erreur - file vide\n"); + exit(-1); + } + if (f.t == f.q) + f = file_vide(); /* la File n'avait plus qu'une seule cellule */ + else + f.t = f.t->suivant; /* la queue ne change pas */ + free(pc); + return f; } - -element defiler2(File *f) /* ATTENTION: la File est modifiée */ -/* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */ + +element defiler2(File * f) { - Cellule *pc=f->t; - element e; - if (est_vide(*f)) - { - printf("Erreur - file vide\n"); - exit(-1); - } - e=f->t->valeur; - if (f->t==f->q) *f=file_vide(); /* la File n'avait plus qu'une seule cellule */ - else f->t=f->t->suivant; /* la queue ne change pas */ - free(pc); - return e; + /* ATTENTION: la File est modifiée */ + /* ATTENTION: supprimer la tête d'une File vide n'a pas de sens */ + Cellule *pc = f->t; + element e; + if (est_vide(*f)) { + printf("Erreur - file vide\n"); + exit(-1); + } + e = f->t->valeur; + if (f->t == f->q) + *f = file_vide(); /* la File n'avait plus qu'une seule cellule */ + else + f->t = f->t->suivant; /* la queue ne change pas */ + free(pc); + return e; } - /********************************************************************/ int main() { - File p; - int i; - p=file_vide(); - for (i=0; i<20; i++) p=enfiler(i,p); - for (i=0; i<25; i++) printf("%d\n",defiler2(&p)); + File p; + int i; + p = file_vide(); + for (i = 0; i < 20; i++) + p = enfiler(i, p); + for (i = 0; i < 25; i++) + printf("%d\n", defiler2(&p)); } -/********************************************************************/ +/********************************************************************/