Chapitre 11 – LES PILES ET LES FILES 1. Les piles 1-1. Présentation Une pile est une structure de données pour laquelle l'ajout et le retrait d'un élément se fait toujours par un seul côté appelé sommet (ou tête). Ajouter un élément à une pile se dit empiler ou push Retirer un élément d'une pile se dit dépiler ou pop Une pile suit la règle LIFO (Last In, First Out): le dernier élément ajouté est le premier à être retiré. 1-2. Implémentation d'une pile Une pile peut être implémentée sous forme e tableau ou sous forme de liste chaînée. Dans le dernier cas, le sommet de la pile est la tête de la liste chaînée. P sommet D’où la définition du type Pile, pour des éléments de type entier : Type maillon = Structure valeur : entier suivant: Pointeur sur maillon FinStructure Pile = Pointeur sur maillon 1-4. Algorithmes sur les piles 1-4-1. Ajout d'un élément à une pile Procédure Empiler( E-S P : Pile , E v : Entier ) Début Variable Q : Pile Q = allouer( 1 , maillon ) Q→valeur = v Q→suivant = P P=Q FinProcédure Chapitre 11 – Les Piles et les Files Page 1 / 4 1-4-2. Valeur du sommet d'une pile non vide Fonction Sommet( P : Pile ) : entier Début Retourner P→valeur FinFonction 1-4-3. Retrait d'un élément d'une pile Procédure Dépiler( E-S P : Pile ) Début Variable Q : Pile Si ( P != NULL ) Alors Q=P P = P→suivant Désallouer( Q ) FinSi FinProcédure // si la pile n'est pas vide 2. Les files 2-1. Présentation Une file ou queue est une structure de données pour laquelle l'ajout d'un élément se fait à une extrémité appelée queue et le retrait d'un élément se fait à une autre extrémité appelée tête. Une file suit la règle FIFO (First In, First Out): le premier élément ajouté sera le premier à être retiré. 2-2. Implémentation d'une file Une file peut être implémentée sous forme de tableau ou sous forme de liste doublement chaînée ou simplement chaînée. Dans le dernier cas, la tête et la queue de la file correspondent à la tête et à la queue de la liste chaînée. Une file doit être accessible à la fois par la tête pour retirer un élément (défiler) et par la queue pour ajouter un nouvel élément (enfiler). Pour cela, on utilise deux pointeurs sur la liste : un pointeur sur la tête et un pointeur sur la queue. pqueue ptete tete Chapitre 11 – Les Piles et les Files queue Page 2 / 4 D’où la définition du type File, pour des éléments de type entier : Type maillon = Structure valeur : entier suivant: Pointeur sur maillon FinStructure File = Structure ptete : Pointeur sur maillon pqueue : Pointeur sur maillon FinStructure 2-3. Algorithmes sur les files 2-3-1. Ajout d'un élément à une file Procédure Enfiler( E-S F : File , E v : Entier ) Début Variable Q : Pointeur sur maillon Q = allouer( 1 , maillon ) Q→valeur = v Q→suivant = NULL Si ( F.pqueue = = NULL ) Alors // si la file est vide F.pqueue = Q F.ptete = Q Sinon (F.pqueue)→suivant = Q F.pqueue = (F.pqueue)→suivant FinSi FinProcédure 2-3-2. Valeur de la tête d'une file non vide Fonction Tete( F: File ) : entier Début Retourner (F.ptete)→valeur FinFonction Chapitre 11 – Les Piles et les Files Page 3 / 4 2-3-3.Retrait d'un élément d'une file Procédure Défiler( E-S F : File ) Début Variable Q : Pointeur sur maillon Si ( F.ptete != NULL) // si la file n'est pas vide Si ( F.ptete = = F.pqueue ) Alors // si la file contient un seul élément Désallouer( F.ptete ) F.ptete = NULL F.pqueue = NULL Sinon Q = F.ptete F.ptete = (F.ptete)→suivant Désallouer(Q) FinSi FinSi FinProcédure 2-4. Remarque Une file peut aussi être implémentée sous forme de tableau ou de liste doublement chaînée. Chapitre 11 – Les Piles et les Files Page 4 / 4