Cette opération doit être faite avant toute autre opération sur la file. Elle initialise le pointeur debut et le pointeur fin avec le pointeur NULL, et la taille avec la valeur 0. La fonction
B. Insertion d'un élément dans la file
Voici l'algorithme d'insertion et de sauvegarde des éléments :
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| int enfiler (File * suite, Element * courant, char *donnee); |
|
int enfiler (File * suite, Element * courant, char *donnee){ Element *nouveau_element; if ((nouveau_element = (Element *) malloc (sizeof (Element))) == NULL) return -1; if ((nouveau_element->donnee = (char *) malloc (50 * sizeof (char))) == NULL) return -1; strcpy (nouveau_element->donnee, donnee); if(courant == NULL){ if(suite->taille == 0) suite->fin = nouveau_element; nouveau_element->suivant = suite->debut; suite->debut = nouveau_element; }else { if(courant->suivant == NULL) suite->fin = nouveau_element; nouveau_element->suivant = courant->suivant; courant->suivant = nouveau_element; } suite->taille++; return 0; } |
| int de_filer (File * suite); |
|
int de_filer (File * suite){ Element *supp_element; if (suite->taille == 0) return -1; supp_element = suite->debut; suite->debut = suite->debut->suivant; free (supp_element->donnee); free (supp_element); suite->taille--; return 0; } |
|
void affiche(File *suite){ Element *courant; int i; courant = suite->debut; for(i=0;i<suite->taille;++i){ printf(" %s ", courant->donnee); courant = courant->suivant; } } |
| #define file_donnee(suite) suite->debut->donnee |
| /*********************\ * file.h * \*********************/ typedef struct ElementListe{ char *donnee; struct ElementListe *suivant; } Element; typedef struct ListeRepere{ Element *debut; Element *fin; int taille; } File; /* initialisation */ void initialisation (File * suite); /* ENFILER*/ int enfiler (File * suite, Element * courant, char *donnee); /* DE_FILER*/ int de_filer (File * suite); /* FirstInFirstOut */ #define file_donnee(suite) suite->debut->donnee /* Affiche la file */ void affiche(File *suite); |
| /***********************\ * file_function.h * \***********************/ void initialisation (File * suite){ suite->debut = NULL; suite->fin = NULL; suite->taille = 0; } /* enfiler (ajouter) un élément dans la file */ int enfiler (File * suite, Element * courant, char *donnee){ Element *nouveau_element; if ((nouveau_element = (Element *) malloc (sizeof (Element))) == NULL) return -1; if ((nouveau_element->donnee = (char *) malloc (50 * sizeof (char))) == NULL) return -1; strcpy (nouveau_element->donnee, donnee); if(courant == NULL){ if(suite->taille == 0) suite->fin = nouveau_element; nouveau_element->suivant = suite->debut; suite->debut = nouveau_element; }else { if(courant->suivant == NULL) suite->fin = nouveau_element; nouveau_element->suivant = courant->suivant; courant->suivant = nouveau_element; } suite->taille++; return 0; } /* de_filer (supprimer) un élément de la file */ int de_filer (File * suite){ Element *supp_element; if (suite->taille == 0) return -1; supp_element = suite->debut; suite->debut = suite->debut->suivant; free (supp_element->donnee); free (supp_element); suite->taille--; return 0; } /* affichage de la file */ void affiche(File *suite){ Element *courant; int i; courant = suite->debut; for(i=0;i<suite->taille;++i){ printf(" %s ", courant->donnee); courant = courant->suivant; } } |
| /*********************\ * file.c * \*********************/ #include<stdio.h> #include<stdlib.h> #include<string.h> #include "file.h" #include "file_function.h" int main () { File *suite; char *nom; if ((suite = (File *) malloc (sizeof (File))) == NULL) return -1; if ((nom = (char *) malloc (50 * sizeof (char))) == NULL) return -1; initialisation (suite); printf ("Entrez un mot : "); scanf ("%s", nom); enfiler (suite, suite->fin, nom); printf ("La file (%d éléments)\n",suite->taille); printf("\nDébut de la FILE [ "); affiche (suite); /*le premier entré sera affiché */ printf(" ] Fin de la FILE\n\n"); printf ("Entrez un mot : "); scanf ("%s", nom); enfiler (suite, suite->fin, nom); printf ("La file (%d éléments)\n",suite->taille); printf("\nDébut de la FILE [ "); affiche (suite); /*le premier entré sera affiché */ printf(" ] Fin de la FILE\n\n"); printf ("Entrez un mot : "); scanf ("%s", nom); enfiler (suite, suite->fin, nom); printf ("La file (%d éléments)\n",suite->taille); printf("\nDébut de la FILE [ "); affiche (suite); /*le premier entré sera affiché */ printf(" ] Fin de la FILE\n\n"); printf ("\nLe premier entré (FirstInFirstOut) [ %s ] sera supprimé", file_donnee(suite)); printf ("\nLe premier entré est supprime\n"); de_filer (suite); /* suppression de premier element entre */ printf ("La file (%d éléments): \n",suite->taille); printf("\nDébut de la FILE [ "); affiche (suite); printf(" ] Fin de la FILE\n\n"); return 0; } |