—
dans le fonctionnement interne d’un ordinateur, pour gérer les appels de fonctions,
on garde une pile des variables locales et des adresses de retour ;
—
dans le fonctionnement des calculatrices en notation polonaise inversée (explica-
tion, intérêt des calculatrices en NPL) ;
— dans le fonctionnement de Postscript (devenu PDF) ;
— pour avoir une fonctionnalité «annuler» dans un traitement de texte.
2 Spécification
Une structure de pile est un type de données pour lequel sont disponibles les opéra-
tions suivantes :
1. creer()
crée et retourne une nouvelle pile, initialement vide (en anglais :
create()) ;
2. empiler(x, p) empile la valeur xsur la pile p(push(x, p)) ;
3. est_vide(p)
retourne
True
si la pile est vide,
False
dans le cas contraire (
is_empty(p)
) ;
4. depiler(t)
retourne la valeur située au sommet de la pile et l’enlève du sommet
de la pile (pop(p)). Provoque une erreur si la pile est vide.
On a aussi parfois une fonction
sommet(p)
retournant la valeur située au sommet de
la pile (top(p)).
3 Exercices
3.1 Chaînes bien parenthésées
On se donne une chaîne de caractère
s
, contenant divers caractères, dont possible-
ment (,),[et ].
On veut vérifier que cette chaîne est bien parenthésée.
Est définie comme «bien parenthésée» toute chaîne
s
vérifiant l’une des conditions
suivantes :
1. sne contient aucune parenthèse ni crochet ;
2. s
commence respectivement par
(
ou
[
et finit respectivement par
)
ou
]
et
s[1:-1]est bien parenthésée ;
3. sest la concaténation de deux chaînes bien parenthésées.
Exemples :
Bien parenthésée "(salut)[comment [vas-((tu))]] ce matin ?"
Mal parenthésées "(salut]" et ")salut("
Écrire une fonction
bienparenthesee(s)
retournant
True
si
s
est bien parenthésée
et False sinon.
(on supposera qu’on dispose d’une structure de pile.)
2