05/05/2017 ALGORITHME ET STRUCTURES DE DONNÉES II LES PILES Élaboré par : Dr. Jihène Tounsi ISG de Sousse [email protected] Qu’est ce qu’une pile Une pile est une structure de données séquentielle basé sur le principe « Last in first out » Le sommet de la pile est le dernier élément ajouté. Dernier élément inséré Sommet Sens d’ajout des éléments Premier élément inséré 1 05/05/2017 Principe de fonctionnement On accède à une pile seulement à travers son sommet. Quand on ajoute un élément à la pile, le sommet devient le nouvel élément ajouté. Ainsi, le sommet pointe toujours sur le dernier élément de la pile. Pour accéder à un élément de la pile, nous devons dépiler les éléments à partir du sommet afin d’accéder à l’élément en question. Les opérations élémentaires CéerPileVide Permet Empiler Permet de créer une pile vide d’ajouter un élément à la pile Dépiler Permet de supprimer le sommet de la pile si elle n’est pas vide PileVide Permet de vérifier si la pile est vide ou non Les autres opérations découlent de ces dernières 2 05/05/2017 Implémentation de la pile Implémentation avec une taille illimitée Le nombre des éléments à stocker n’est pas connu à l’avance. Utilisation des pointeurs. Création dynamique des éléments à stocker (variante de la liste chaînée) Implémentation avec une taille limitée Le nombre maximale des éléments à stocker est connu à l’avance. Utilisation du tableau. Implémentation contigüe et statique. Implémentation dynamique 3 05/05/2017 Structure de la pile Donnée : l’élément à stocker. Un pointeur sur l’élément précédent. Algorithme_ExemplePile; Type Element = enregistrement Donnée:entier Prec:^element Fin enregistrement Pile=^element Variables P:Pile Debut …. Fin. Les opérations élémentaires PileVide(P:Pile):booléen Une fonction qui Retourne Vrai si la pile est vide Faux sinon. Algorithme_ExemplePile; Type … Fonction PileVide(P:Pile):booléen Debut /*Si la Pile est vide càd que le pointeur est Nulle. Il ne pointe sur rien*/ Si(P==Null) alors Retourner Vrai Sinon Retourner Faux Fin Si Fin Fonction Variables P:Pile Debut …. Fin. 4 05/05/2017 Les opérations élémentaires Empiler(P:Pile , e:entier) e: l’élément à ajouter à la pile. Les étapes de l’opération : Créer un nouvel élément de type Pile. Vérifier que l'élément a bien été créé. Affecter « e » à la donnée de l’élément créé. Changer le sommet de la pile. On fait pointer le sommet de la pile sur cet élément. Les opérations élémentaires Dépiler(P:Pile):entier Une fonction retournant l’élément stocké au sommet de la pile. Les étapes de l’opération : Vérifier si la pile n'est pas vide. Si elle ne l'est pas, stocker dans un élément temporaire l'avantdernier élément de la pile. Stocker dans une variable locale la valeur étant stockée dans le dernier élément de la pile. Supprimer le dernier élément. Faire pointer la pile vers notre élément temporaire. Retourner la valeur dépilée. 5 05/05/2017 Implémentation statique Structure de la pile Tab : Tableau des éléments à stocker. L’indice du sommet de la pile. Algorithme_ExemplePile; Type Element=enregistrement … Fin enregistrement Pile = enregistrement tab:Tableau[1,100] d’element Sommet:entier Fin enregistrement Variables P:Pile Debut …. Fin. 6 05/05/2017 Les opérations élémentaires CréerPileVide(P:Pile par adresse) Une fonction qui Retourne Vrai si la pile est vide Faux sinon. Algorithme_ExemplePile; Type … Fonction PileVide(P:Pile):booléen Debut /*Si la Pile est vide càd que le Sommet =0. */ Si(P.Sommet==0) alors Retourner Vrai Sinon Retourner Faux Fin Si Fin Fonction Variables … Debut …. Fin. Les opérations élémentaires CréerPileVide(P:Pile par adresse) Une procédure qui initialise Sommet à 0. P.S: l’ index du tabeau débute à 1. Algorithme_ExemplePile; Type … Procédure CréerPileVide(P:Pile par adresse) Debut P.Sommet=0 Fin Procédure … Fin. 7 05/05/2017 Les opérations élémentaires Empiler(P:Pile par adresse, e:entier) e: l’élément à ajouter à la pile. Les étapes de l’opération : Vérifier que la pile n’est pas pleine. Ajouter l’élément à Sommet+1 Incrémenter Sommet Les opérations élémentaires Dépiler(P:Pile):entier Une fonction retournant l’élément stocké au sommet de la pile. Les étapes de l’opération : Vérifier si la pile n'est pas vide. Si elle ne l'est pas, récupérer l’élément dans une variable temporaire. Décrémenter Sommet. Retourner la variable temporaire. 8 05/05/2017 Fin du chapitre Pile… 9