

typedef struct ElementListe {
char *donnee;
struct ElementListe *suivant;
}Element;
typedef struct ListeRepere{
Element *debut;
Element *fin;
int taille;
} File;
void initialisation (File * suite);Cette opération doit être faite avant toute autre opération sur la file.
void initialisation (File * suite){
suite->debut = NULL;
suite->fin = NULL;
suite->taille = 0;
}
int enfiler (File * suite, Element * courant, char *donnee);La 1ère image affiche le début de l'insertion, donc la liste a la taille 1 après l'insertion.


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);La fonction renvoie -1 en cas d'échec sinon elle renvoie 0.

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;
}
Résultats pour Les files en langage C
Résultats pour Les files en langage C
Résultats pour Les files en langage C
Résultats pour Les files en langage C