Cour sur les pile algorithmique, Lecture notes of Law

Cour sur les pile algorithmique

Typology: Lecture notes

2022/2023

Uploaded on 05/27/2023

ines-zouainia
ines-zouainia 🇩🇿

3 documents

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
ENSC, Département des sciences exactes & d’informatique, 2eme année Informatique
Cours Algorithmique 2 Chapitre 03 : Les Piles
25
Partie A
Chapitre 03 : Les Piles
I. Principe
La pile est une structure très utilisée en informatique, surtout dans les langages de
programmation (appel de procédures, calcul des expressions arithmétiques,...). Les piles ne sont
pas de nouveaux types de données mais plutôt une manière de gérer un ensemble de données.
La pile est une liste ordonnée sans fin d’éléments dans laquelle on ne peut introduire ou enlever
un élément qu'à une extrémité appelée tête de pile ou sommet de pile. Noter que dans une pile,
le dernier élément inséré sera le premier à être supprimé, retiré : on parle de liste LIFO ‘Last In
First Out’ (En anglais : pile = stack). Elles sont très souvent utiles et servent, entre autres, à
mémoriser des évènements en attente de traitement.
Il n'y a pas de structures spécifiques prévues dans les langages de programmation pour les piles.
Il faut donc les créer de toute pièce sachant que la représentation en mémoire de ces structures
de données peut être, selon le besoin, statique (utilisation des tableaux) ou dynamique
(utilisation des listes).
Lorsqu’une structure de données est manipulée selon la stratégie Pile, alors les deux opérations
d’ajout et de récupération se font uniquement en tête de la pile, appelé aussi le sommet de la
pile. Autrement dit, le seul élément accessible est le premier élément.
pf3
pf4
pf5

Partial preview of the text

Download Cour sur les pile algorithmique and more Lecture notes Law in PDF only on Docsity!

Cours Algorithmique 2 Chapitre 03 : Les Piles

Partie A

Chapitre 03 : Les Piles

I. Principe La pile est une structure très utilisée en informatique, surtout dans les langages de programmation (appel de procédures, calcul des expressions arithmétiques,...). Les piles ne sont pas de nouveaux types de données mais plutôt une manière de gérer un ensemble de données. La pile est une liste ordonnée sans fin d’éléments dans laquelle on ne peut introduire ou enlever un élément qu'à une extrémité appelée tête de pile ou sommet de pile. Noter que dans une pile, le dernier élément inséré sera le premier à être supprimé, retiré : on parle de liste LIFO ‘Last In First Out’ (En anglais : pile = stack). Elles sont très souvent utiles et servent, entre autres, à mémoriser des évènements en attente de traitement. Il n'y a pas de structures spécifiques prévues dans les langages de programmation pour les piles. Il faut donc les créer de toute pièce sachant que la représentation en mémoire de ces structures de données peut être, selon le besoin, statique (utilisation des tableaux) ou dynamique (utilisation des listes). Lorsqu’une structure de données est manipulée selon la stratégie Pile, alors les deux opérations d’ajout et de récupération se font uniquement en tête de la pile, appelé aussi le sommet de la pile. Autrement dit, le seul élément accessible est le premier élément.

Cours Algorithmique 2 Chapitre 03 : Les Piles Exemple une pile de livres, une pile d’assiettes, une pile à un jeu de cartes si l’on se refuse le droit de manipuler plus d’un de leurs éléments à la fois. Figure 13 : pile d’assiette II. Opérations sur les piles En informatique une pile sert essentiellement à stocker des données qui ne peuvent pas être traitées immédiatement, car le programme à une tâche plus urgente ou préalable à accomplir auparavant. En particulier les appels et retours de fonctions sont gérés grâce à une pile appelée pile d'exécution. Les opérations habituelles sur les piles sont :  Init-Pile(P) : Initialisation de la pile (généralement à vide).  Pile-Vide(P), Pile-Pleine : Vérification du contenu de la pile (pile pleine ou vide).  Depiler (P) : Dépiler un objet de P, si elle n’est pas vide, consiste à supprimer de P l'objet placé au sommet (dans la pile d’assiettes seule peut être retirée celle qui se trouve au sommet). L'objet dépilé est retourné comme résultat du traitement(en anglais pop(P)).  Empiler (P,x) : Empiler un objet sur une pile P, si elle n’est pas saturée, consiste à insérer cet objet au sommet de P (dans la pile d’assiettes une nouvelle assiette ne peut être ajoutée qu’au-dessus de celle qui se trouve au sommet)(en anglais push(P,x)). III. Modélisation et Implémentation des piles En termes de programmation, une pile est un enregistrement avec :

  • Une structure de données pour enregistrées les valeurs (elle peut être statique ou dynamique)
  • Une variable sommet qui indique le sommet de la pile. Les piles peuvent être représentés en deux manières : par des tableaux ou par des listes chainées.

Cours Algorithmique 2 Chapitre 03 : Les Piles Remarque : Les données enregistrées dans la pile peuvent être des entiers, des réels, des caractères, des chaînes de caractères, des booléens, des tableaux. III.1.b Initialisation d’une pile Il s’agit d’initialiser le sommet à "-1" pour attester l’absence de valeurs dans la pile. void Init_Pile () {P.sommet = -1 ; } III.1.c Vérification de pile vide void Pile_vide ( ) { if( P.sommet = -1 ) printf("la pile est vide") ; else printf("la pile n’est pas vide") ;} III.1.d Vérification de pile pleine void Pile_pleine () { if (P.sommet = max-1) printf("la pile est pleine") ; else printf("la pile n’est pas pleine") ;} III.1.e Ajout d’une nouvelle valeur à une pile void push(int x) { if (P.sommet == max-1) {printf("erreur :pile pliene !") ; exit(1);} else{ P.sommet=P.sommet+1; P.tab[P.sommet]=x; }}

Cours Algorithmique 2 Chapitre 03 : Les Piles III.1.f Suppression d’une valeur de la pile int pop() { int x; if (P.sommet== -1) { printf("erreur :pile vide !") ; return 1 ; } else{x = P.tab[P.sommet]; P.sommet=P.sommet-1; return x;} } III. 2 Implémentation par des Listes chainées(Dynamique) Une pile dynamique est une liste à la quel on attache un pointeur sommet. C’est un enregistrement à une seule case : pointeur qui pointe la dernière valeur traitée dans la liste (sommet). L’implémentation dynamique utilise les listes linéaires chainées. Dans ce cas, la pile peut être vide, mais ne peut être jamais pleine, sauf bien sûr en cas d’insuffisance de l’espace mémoire. L’empilement et le dépilement dans les piles dynamiques se font à la tête de la Pile. III.2.a Déclaration La pile n’est rien qu’un pointeur vers le premier élément de la pile. Les donnes de la pile peuvent être de n’importe quel type : entier, réel, caractère, structure, tableau,… typedef struct Element{ int Info; struct Element *suiv; } PILED; PILED *P ; III.2.b Initialisation d’une pile PILED *sommet=NULL ; III.2.c Vérification de pile vide Il n’y a pas de pile pleine pour les piles dynamique. La seule possibilité de ne pas pouvoir ajouter un élément c’est d’avoir une mémoire pleine, cas que l’on ne prend pas en considération