Académique Documents
Professionnel Documents
Culture Documents
Chapitre 3
Chapitre 3
Tronc commun
Une pile permet de réaliser ce qu’on nomme une LIFO (Last In First Out) : les derniers éléments à être
ajoutés à la pile seront les premiers à être récupérés
Lorsqu’on ajoute une assiette en haut de la pile, on retire toujours en premier celle qui se trouve en
haut sinon tout le reste s'écroule.
3
Piles et Files
Définition
Une file permet de réaliser une FIFO (First In First Out) ce qui veut dire que les premiers éléments ajoutés à
la file, seront aussi les premiers à être récupérés.
Lorsqu’une personne arrive, il est ajouté à la fin de la file (queue). La personne servie est la première
personne de la file (arrivée)
Les files peuvent être utilisées afin de mémoriser des données en attente de traitement.
4
Implémentation d’une pile
5
Implémentation d’une pile
Déclaration des variables
dernier
Syntaxe : Donnée
Donnée Précédent
typedef struct { Précédent
int donnee;
struct Maillon *precedent;
Donnée
} Maillon;
Précédent
typedef struct {
La pile n’est rien qu’un pointeur Donnée
Maillon *dernier; vers le dernier maillon de la liste
Précédent
}Pile;
6
Implémentation d’une pile
Initialisation de la pile
dernier
typedef struct {
Maillon *dernier;
}Pile;
pile->dernier=NULL;
7
Ajouter un élément à la pile
Empiler
dernier
20
43 29 Précédent
Précédent Précédent
Prototype de la fonction
9
Ajouter un élément à la pile
Empiler
if (nouveau_maillon !=NULL) {
nouveau _maillon ->donnee=valeur;
nouveau _maillon ->precedent=pile->dernier;
pile->dernier=nouveau_maillon;
}
}
10
Retirer un élément de la pile
Dépiler
Le maillon qui sera retiré de la pile sera le dernier maillon que l'on a ajouté (l’élément se trouvant au
sommet de la pile).
dernier
20
13 27 Précédent
Précédent Précédent
Le prototype de la fonction :
11
Retirer un élément de la pile
Dépiler
12
Retirer un élément de la pile
Dépiler
Il s'agit de la fonction permettant d'effacer la pile. Cette fonction se réalise en seulement deux étapes.
Le prototype de la fonction :
Algorithme de la fonction :
14
Implémentation d’une file
Identiquement aux piles, cette structure sera basée sur les listes chaînées .
Cependant, cette fois-ci, on ne pointera plus sur le sommet mais sur la base de la file.
Nous utilisons un pointeur vers l'élément suivant et non plus vers l'élément précédent. Ceci s'explique par
le fait que nous pointons à la base de la file (sur le premier élément de la file)
Lors de l'ajout d'un élément, celui-ci se fera en fin de liste. Le retrait d'un élément se fera en début de
liste.
15
Implémentation d’une file
typedef struct {
Maillon *premier;
}File;
premier
18
Suivant
34
42
Suivant
Suivant
16
Initialisation d’une file
premier
17
Ajouter un élément à la file
Enfiler
17
premier
Suivant
18
Suivant
34
42
Suivant
Suivant
Le prototype de la fonction :
18
Ajouter un élément à la file
Enfiler
19
Ajouter un élément à la file
Enfiler
void Enfiler (File *file, int valeur) {
Maillon * nouveau_maillon;
Maillon *courant;
nouveau_maillon=(Maillon *)malloc(sizeof(Maillon));
if (nouveau_maillon!=NULL){
nouveau_maillon->donnee=valeur;
nouveau_maillon->suivant=NULL;
if (file->premier!=NULL) {
courant=file->premier;
while (courant->suivant!=NULL)
courant=courant->suivant;
courant->suivant=nouveau_maillon;
} else
file->premier=nouveau_maillon;
}
}
20
Retirer un élément de la file
Défiler
L’élément qui sera enlevé sera le premier élément de la file.
17
premier
Suivant
18
Suivant
34
42
Suivant
Suivant
21
Retirer un élément de la file
Défiler
Le maillon qui sera enlevé sera le premier maillon de la file.
Il s’agit de la fonction permettant d’effacer la file. Cette fonction se réalise en seulement deux étapes.
✓ Tant que la file n’est pas vide ;
✓ Effacer le dernier élément de la file grâce à la fonction Défiler.
23
Conclusion
✓ Les piles et les files permettent d'organiser en mémoire des données qui arrivent au fur et à mesure.
✓ Elles utilisent un système de liste chaînée pour assembler les éléments.
✓ Dans le cas des piles, les données s'ajoutent les unes au-dessus des autres. Lorsqu'on extrait une
donnée, on récupère la dernière qui vient d'être ajoutée (la plus récente). On parle d'algorithme LIFO
pour "Last In First Out".
✓ Dans le cas des files, les données s'ajoutent les unes à la suite des autres. On extrait la première
donnée à avoir été ajoutée dans la file (la plus ancienne). On parle d'algorithme FIFO pour "First In
First Out".
24