Vous êtes sur la page 1sur 15

Cours Complexité des Algorithmes

Structure d données : Pile

Prof. A. BOUZIDI
Objectif

• Introduire la notion de type abstrait de données

• Étudier les structure lingère


• Piles
• Files
• Listes
Type abstrait de données
• Concevoir un algorithme, il faut adopter un démarche descendante
• L’analyse procède par affinements successifs.

• Il faut identifier les structures de données très tôt dans le processus de


développement
• la représentation concrète des données n’est pas fixé , elles sont considérer de
manière abstraite. On parle alors de type abstrait de données (TAD)

• On se donne une notation qui décrit les données, des opérations


applicables à ces données, et les propriétés de ces opérations.
Type abstrait de données

Un TDA est une ensemble d’élément muni d’opération agissant


sur ses éléments.

Spécification:
• La définition d’un certain nombre d’opération avec leurs signature
(ensemble de départ et arrivée)
• Des axiomes qui définissent le comportement
• Les précondition si les opérations sont partiellement définies.
Type abstrait de données

• TAD en 4 types de structures


• Les structures séquentielles: les Piles, files et listes.

• Structure arborescentes comme les arbres (binaires ou généraux).

• Les structures relationnelles : les graphes

• Structures à accès par clé (tables).


PILE
LIFO ( Last In First Out)

1
Pile : Exemple
d

Empiler : les objets {a,b,c,d} b

a
Dépiler{d}

Sommet

Pile P
Pile

• Une pile est une structure linéaire d’objet permettant d’insérer,


supprimer et consulter les données selon l’ordre LIFO (Last In First
Out)

• Vocabulaire basé sur une représentation verticale:


• Empiler (stack)
• Dépiler (unstacking/ push/ remove)
• Sommet (top)
• pile_vide (empty)
Exemple TDA : Les Piles
• Type abstrait : Pile
• Opération:
• Pile_vide: → Pile
• Est_vide: Pile → Booleeen
• Empiler: Elément X Pile →Pile
• Depilet : Pile → Pile
• Sommet : Pile → Elément
• Précondition
• Dépiler(p) est définit si est seulement si Est_vide(p) = false
• Sommet est définit si est seulement si Est_vide(p) = false
• Axiomes
• Soit e element, p:pile;
• Est_vide(pile_vide) = true
• Est_vide(empiler(p,e)) = false
• Depiler(Empiler(p,e)) = p
• Sommet(Empiler(p,e)) = e
Représentation d’une pile
• Représentation contiguë (par tableaux)
• Les élément de la pile sont rangés dans un tableau.
• Un entier représente la position du sommet de la pile
• Représentation chaîné (par pointeurs)
• Les éléments de la pile chaîné entre eux.
• Un pointeur sur le premier élément désigne la pile et représente le sommet de
la pile.
• Une pile vide est représenter par le pointeur NLL
Représentation chainé
• Structure d’une pile
//type des élément
typedef int element;
//type cellule
typedef struct cellule
{
element donnee; /* La donnée que notre pile stockera. */
struct cellule *suivant; /* Pointeur vers l'élément précédent de la pile. */
} cellule;
//type pile
typedef struct Pile{
cellule *tete;
}
Représentation chainé
• Méthodes
//déclaration des fonction gérant la pile
Pile pile_vide();
Booleen est_vide(Pile p);
Pile empiler(Pile p, Element e);
Pile depiler(Pile p);
Element sommet(Pile p)
Exercice Pile
• Créer une programme qui crée une pile P d’element entier, contenant
les valeur 5,7 et 9 (9 sera le sommet) affichante une menu avec les
différentes tâches suivante:

• 0 : Quitter
• 1 : Afficher le sommet de la pile
• 2 : est vide?
• 3: empiler un élément
• 4 : dépiler un élément
Exercice Pile
• Créer une programme qui crée une pile P d’element entier, contenant les valeur 5,7
et 9 (9 sera le sommet) affichante une menu avec les différentes tâches suivante:

• 0 : Quitter
• 1 : Afficher le sommet de la pile
• 2 : est vide?
• 3: empiler un élément
• 4 : dépiler un élément
• 5 : dépiler x éléments
• 6 : Inverser la pile
• 7 : vider la pile
• 8 : afficher les valeurs paire positives de la pile p
• 9 : Trier la pile P par la méthode tri par insertion

Calculer la complexité de chaque fonction


a.bouzidi@uae.ac.ma

Vous aimerez peut-être aussi