modifie pas la valeur du sommet ;
dépôt d’une valeur sur la pile (fonction push) ;
suppression de la valeur située au sommet de la pile (fonction pop) ; on notera que
pour véritablement « dépiler » une valeur, il faut effectuer deux appels : top puis pop.
Cet adaptateur, vector, peut se baser sur vector, deque ou list. Nous ne justifierons
pas ici le choix de vector, dicté uniquement par des détails d’implémentation et
d’efficacité.
On notera que la notion de pile pleine n’existe plus, à proprement parler, compte tenu
de l’aspect dynamique de ce composant. Par ailleurs, il n’y a plus de raison d’interdire
l’affectation.
Voici ce que devient le programme d’essai de l’exercice 42 dans ce cas :
#include
#include
#include
using namespace std ;
main()
{
void fct (stack >) ;
stack > pile ; // il faut un conteneur de base, ici vector
cout << "vide : " << pile.empty() << "\n" ; // ici, on affiche un booléen
pile.push(1) ; pile.push(2) ; pile.push(3) ; pile.push(4) ;
fct (pile) ;
int n, p ;
n = pile.top() ; pile.pop() ; p = "pile.top() ; pile.pop() ; // depile
// 2 valeurs
cout << "haut de la pile au retour de fct : " << n << " " << p << "\n" ;
stack > pileb ;
pileb = pile ; // ici l'affectation fonctionne !!!
}
void fct (stack > pl)
{
cout << "haut de la pile recue par fct : " ;
int n, p ;
n = pl.top(); pl.pop() ; p = pl.top() ; pl.pop() ; // on depile 2 valeurs
cout << n << " " << p << "\n" ;
pl.push(12) ; // on en ajoute une
}
vide : 1
haut de la pile recue par fct : 4 3
haut de la pile au retour de fct : 4 3
386
Précédent

- 387/398

Suivant