int main () { contenu txt; fifo * pf = creer_fifo () ; for (; ; ) { printf (" Ajouter un texte a la file (! pour retirer , * pour finir ) : ") ; saisir_contenu (& txt ) ; if ( comparer_chaine (& txt , "*") == 0) break ; if ( comparer_chaine (& txt , "!") == 0) { if ( est_vide_file ( pf ) ) { printf (" Retrait imposible . File vide ") ; } else { defiler_file ( pf , & txt ) ; } afficher_file ( pf ) ; printf ("\n ") ; } else { enfiler_file ( pf , & txt ) ; afficher_file ( pf ) ; printf ("\n ") ; } } delete_file ( pf ) ; getchar () ; return 0; }
/*Procédure qui supprime le premier élément de la file*/ void defile(file *f) { printf("-->Suppression\n"); if (est_vide_file(*f)) printf ("------------>File vide, impossible de supprimer une valeur\n"); else { (*f)->debut = ((*f)->debut + 1) % N; (*f)->nbr_val--; } }
//Affichage d'une file void affiche_file (file f) { int i,j; i = f->debut; printf ("Affichage file :"); if(est_vide_file(f)) printf("(vide)"); else for (j=0;j<(f->nbr_val);j++) { printf (" -> %d (case %d)",f->tab[i],i); //Affiche la valeur dans le tableau avec le numero de la case if(i == N-1) //du tableau pour montrer le décalage des indices dans le tableau i = 0; else i++; } printf("\n"); }
Arbre algo_arbreACM(File fileACM, Sommet * tab_sommet, int num_depart) { Arbre arbreACM = NULL; Arc* ptr_arc = NULL; arbreACM = malloc(sizeof(*arbreACM)); if (arbreACM == NULL) return NULL; arbreACM->sommet = &tab_sommet[num_depart]; tab_sommet[num_depart].noeudArbreACM = arbreACM; while (!est_vide_file(fileACM)) { ptr_arc = (Arc *) defiler(&fileACM); ajouter_arbre(ptr_arc, tab_sommet); } return arbreACM; }