0% ont trouvé ce document utile (0 vote)
24 vues3 pages

Les Files

Le document présente les concepts fondamentaux des files d'attente, une structure de données qui suit le principe FIFO (First In, First Out). Il décrit la terminologie associée, les procédures d'implémentation dynamique, ainsi qu'un exemple d'implémentation en langage C. Les procédures incluent la création, l'enfilage et le défilage des éléments dans la file.

Transféré par

Dalila Zenati
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues3 pages

Les Files

Le document présente les concepts fondamentaux des files d'attente, une structure de données qui suit le principe FIFO (First In, First Out). Il décrit la terminologie associée, les procédures d'implémentation dynamique, ainsi qu'un exemple d'implémentation en langage C. Les procédures incluent la création, l'enfilage et le défilage des éléments dans la file.

Transféré par

Dalila Zenati
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Université Alger 1 – Faculté des Sciences

Département Mathématiques et Informatique

Module : ASD3
Enseignant : Mahseur Mohammed

LES FILES D’ATTENTE

1 Définition
Une File est une structure de données abstraite composée d’un ensemble d’élé-
ments de même type, dans laquelle tout nouveau élément est inséré à la fin et tout
élément ne peut être supprimé que du début. C’est le Principe FIFO.

2 Terminologie
• Début de la File : Tête
• Fin de la File : Queue
• Ajouter un nouveau élément : Enfiler
• Supprimer un élément : Défiler
• La File ne contient aucun élément : File vide
• FIFO : First in first out

3 Machine abstraite
• F est une File
• Val est une variable de même type que les éléments de la File
• Procédure CréerFile(F) : Créer une File vide
• Fonction Booléenne FileVide(F) : Tester si la File est vide
• Fonction Booléenne FilePleine(F) : Tester si la File est pleine
• Procédure Enfiler(F,Val) : Ajouter Val à la fin de la File
• Procédure Défiler(F,Val) : Retirer dans Val l’élément en début de la File

1
4 Implémentation dynamique d’une File
Type Maillon = Enregistrement
Info : TypeInfo ; Suiv : Pointeur sur Maillon ;
Fin ;
Type File = Enregistrement
Tête, Queue : Pointeur sur Maillon ; Fin ;
Variables
F : File ; Val : TypeInfo ;

Procédure CréerFile(S/ : F :File)


F.Tête←NULL ;
Fin Procédure

Fonction FileVide(F :File) :Booléen


Retourner (F.Tête=NULL) ;
Fin Fonction

Procédure EnFiler(ES/ : F :File ; E/ : Val :TypeInfo)


Var Nouv : Pointeur sur Maillon
Allouer(Nouv) ; Valeur(Nouv).Info←Val ;Valeur(Nouv).Suiv←NULL ;
Si (F.Tête=NULL) alors
F.Tête←Nouv ; F.Queue←Nouv ;
Sinon
Valeur(F.Queue).Suiv←Nouv ;F.Queue←Nouv ;
Fin Si
Fin Procédure

Procédure Defiler(ES/ : F :File ; ES/ : Val :TypeInfo)


Var Sauv : Pointeur sur maillon ;
Si (Not FileVide(F)) alors
Sauv←F.Tête ; Val←Valeur(F.tête).Info ;
Si (F.Tête=F.Queue) alors
F.Queue←NULL ;
Fin Si
F.Téte←Valeur(F.Tête).Suiv ; Libérer(Sauv) ;
Sinon
Ecrire("File Vide") ;
Fin Si
Fin Procédure

2
5 Implémentation en Langage C
Exemple :
Créer une File d’entiers puis enfiler six éléments, ensuite les défiler et les afficher.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
//-----------------------------
typedef int TypeInfo;
//----------------------------------
struct Maillon{TypeInfo Info; struct Maillon * Suiv;};
//-----------------------------------------
struct File{struct Maillon *Tete, *Queue;};
//----------------------------
void CreerFile (struct File *F){(*F).Tete=NULL;}
//--------------------------------
bool FileVide(struct File F){return (F.Tete==NULL);}
//-------------------------
void Enfiler(struct File *F, TypeInfo Val){
struct Maillon *Nouv;
Nouv=malloc(sizeof(struct Maillon));
Nouv->Info=Val; Nouv->Suiv=NULL;
if((*F).Tete==NULL){(*F).Tete=Nouv;(*F).Queue=Nouv;}
else{((*F).Queue)->Suiv=Nouv;(*F).Queue=Nouv;}}
//------------------------------------
void Defiler(struct File *F, TypeInfo *Val){
struct Maillon *Sauv;
if (FileVide(*F)){printf("la file est vide\n");}
else{*Val=((*F).Tete)->Info; Sauv=(*F).Tete;
if((*F).Tete==(*F).Queue){(*F).Queue=NULL;}
(*F).Tete=((*F).Tete)->Suiv;free(Sauv);}}
//-------------------------------
int main()
{int i;TypeInfo v;
struct File F; CreerFile(&F);
for(i=1;i<7;i++){
printf("donner une valeur: "); scanf("%d",&v);Enfiler(&F,v);}
while(!FileVide(F)){Defiler(&F,&v);printf("%d\n",v);}
return 0;}
//--------------------------------------------------

Vous aimerez peut-être aussi