Académique Documents
Professionnel Documents
Culture Documents
Structures
Des données
Pr. Saïd Ouatik El Alaoui
ENSA, Kénitra, Maroc
e-mail:
s_ouatik@yahoo.com / ouatikelalaoui.said@uit.ac.ma
A.U. 2022/2023
queue tete
3 Structures de données Séance 5
Les Files — Définition
Une FILE est une structure destinée au stockage des données en
cours de traitement par un programme.
Une file est une liste particulière fondée sur le principe premier
entrée premier sorti (First In First Out) .
tete queue
enfiler
défiler
éléments
Exemple:
Les fichiers à imprimer se mettent en file
d’attente, de façon que le premier fichier
envoyé soit le premier à être imprimé.
queue
tete
Tab
Exemple:
queue 4
Indices
tete 0 0 1 2 3 4 5 6 7 8 9
Tab 15 24 58 89 47
FILE InitFile ()
{
FILE F;
F.queue =-1;
F.tete =-1;
return F;
}
int FileVide(FILE F)
{
if(F.tete ==-1)
return 1;
return 0;
}
11 Structures de données Séance 5
Les Files — Représentation contigüe
Enfiler un élément
Il faut vérifier si la file n’est pas pleine avant d’insérer
l’élément.
Représentation chaînée
tete queue
18 Structures de données Séance 5
Les Files — Représentation Chaînée
int FileVide(FILE F)
{
if(F.tete==NULL && F.queue==NULL )
return 1;
return 0;
}
20 Structures de données Séance 5
Les Files — Représentation chaînée
maillon* m;
m=(maillon*)malloc(sizeof(maillon));
if(m!=NULL){ m->valeur = V;
m->suivant = NULL;
} else return 0;
If(F.tete!=NULL)
{ F.queue->suivant= m;
F.queue=m ;}
23 else F.tete =F.queue=m;
Structures de données Séance 5
Les Files — Représentation chaînée
Enfiler un élément
créer un maillon avec la valeur de l’élément, son suivant pointe vers NULL
Ajouter l’élément à la queue de la liste .
La fonction retourne 1 si la valeur est insérée et 0 sinon
queue
(2)
tete
(3)
(1)
maillon* m;
if (!FileVide(F)){
m m=F.tete; /*1*/
F.tete=F.tete->suivant; /*2*/
Remarque:
free(m); /*3*/
Si la File est vide on fait rien }
Défiler un élément
créer un pointeur m, tel que m et p pointent sur la même zone,
Pointer la tête sur la zone pointée par le suivant de tête ,
Libérer la zone pointée par m ,
Exemple
int main(){
typedef struct { FILE F;
int valeur; int a,b,c,x;
struct maillon *suivant;
} maillon; F= InitFile();
typedef struct { int i=0;
maillon *tete; while(i<8){
maillon *queue; Enfiler(&F,i+1);
} FILE; i++;
}
FILE InitFile ()
{...} while(!FileVide(F)) {
int FileVide(PILE P) b= Tete(F,&x);
{...} c= defiler(&F);
int Tete(FILE F,int *x) printf("\n X : %d",x);
{...} }
int Enfiler(FILE *F,int x) getch();
{...} return 0;
int Defiler(FILE *F) }
{...}