Académique Documents
Professionnel Documents
Culture Documents
Module I33 :
Structures de données
Prof : Badr HSSINA
badr.hssina@univh2c.ma
Parcours MIP (S3)
2019-2020
Pr. B.HSSINA badr.hssina@univh2c.ma Module I133:
Structures de données 1
plan
Structures linéaires
Listes simplement chaînées
Listes doublement chaînées
Piles
Files
dans le bus
Extraction Insertion
Les serveurs d’impression, qui doivent traiter les requêtes dans l’ordre dans lequel
elles arrivent, et les insèrent dans une file d’attente (ou une queue);
Un algorithme de parcours en largeur utilise une file pour mémoriser les nœuds visités;
On utilise aussi des files pour créer toutes sortes de mémoires tampons(en anglais
buffers)
Etc.
Pr. B.HSSINA badr.hssina@univh2c.ma Module I133:
Structures de données 7
Représentation
Différentes représentations
Représentation statique
Un vecteur qui représente la FILE F[Max] avec av et
ar deux variables globales indiquant la tête et
la queue de la file.
Un enregistrement avec deux champs.
Représentation dynamique
Listes chaînées
ar
av
inserer(C) extraire(A)
Pr. B.HSSINA badr.hssina@univh2c.ma Module I133:
Structures de données 10
Les opérations de base sur la File
initialisation : la file est vide au départ
ar 0 et av 0
Remarque : on n’a pas besoin dans ce cas de préciser la tête, elle est toujours au
début de la file
E indice=4 E E E E
D D D av=3
D D av=3 av=3
il n ’y a pas perte de place, on exploite tout le tableau. On aura un Overflow lorsque ar+1=av
(dans cette représentation circulaire ar représente le nombre d’élément dans la file)
int F[MAX];
int av;
int nb; // nombre d’élément dans la file
} TFile;
file->F[indice] = x;
file->nb++;
}
Pr. B.HSSINA badr.hssina@univh2c.ma Module I133:
Structures de données 15
Les opérations de base sur la File
void defiler(TFile *file, int *obj)
Extraction
30 15 6 2 Insertion
debut fin
} Element;
typedef struct {
Cette opération doit être faite avant toute autre opération sur la File.
Elle initialise le pointeur debut et fin avec le pointeur NULL, et la taille avec la valeur 0.
Fonction
File * initialisation (File * F) {
F->debut = NULL;
F->fin = NULL;
F->taille = 0;
return F;
}
Prototype de la fonction :
La fonction renvoie un pointeur de type File.
Algorithme de la fonction :
Déclaration d'élément(s) à insérer.
Allocation de la mémoire pour le nouvel élément.
Remplir le contenu du champ de données.
Mettre à jour le pointeur debut vers le 1er élément (le début de la file).
Mettre à jour le pointeur fin (ça nous servira pour l'insertion vers la fin de la file).
Mettre à jour la taille de la file.
fin
debut Nouveau_Element
(2) donnee
donnee donnee donnee donnee (1) suivant
suivant suivant suivant suivant
NULL
Element *nouveau_element;
nouveau_element=AllouerNoued();
nouveau_element->info= donnee;
F->taille++;
return F;
}
Algorithme de la fonction :
le pointeur supp_elem contiendra l'adresse du 1er élément (debut)
le pointeur debut pointera vers le 2ème élément (après la suppression du 1er
élément, le 2ème sera au début de la file)
la taille de la file sera décrémentée d'un élément
debut fin
(2)
Elem_supp
if (F->debut==NULL) return F;
elem_supp= F->debut;
free (elem_supp);
F->taille--; return F };
Algorithme de la fonction
il faut se positionner au debut de la file
En utilisant le pointeur suivant de chaque élément, la file est
parcourue du debut vers la fin
La condition d'arrêt est donnée par la taille de la file
Fonction
void affiche (File * F) {
Element *courant; int i;
courant = F->debut;
for(i=1;i<=(F->taille);i++) {
printf(" %d\n", courant->info);
courant = courant->suivant; }
}
Pr. B.HSSINA badr.hssina@univh2c.ma Module I133:
Structures de données 29
Opération de base sur les Files
Vider la file
Algorithme de la fonction
Fonction
Dans les piles, un seul pointeur est utilisé. Il Dans les files, deux pointeurs différents sont
pointe vers le haut de la pile. utilisés pour les extrémités; la tète et la fin.
Dans les piles, le dernier objet inséré est le Dans les files, l’objet inséré en premier est le
premier à sortir. premier qui sera supprimé.
Les piles suivent l’ordre Last In First Out (LIFO) Les files suivent l’ordre First In First Out (FIFO)
Les opérations de pile s’appellent Empiler et Les opérations de file sont appelées Enfiler et
Dépiler. Défiler.
Les piles sont visualisées sous forme de Les files sont visualisées sous forme de
collections verticales. collections horizontales.