Vous êtes sur la page 1sur 1

Printed by Vincent Granet Printed by Vincent Granet

nov. 28, 17 11:04 PileTableau.hpp Page 1/2 nov. 28, 17 11:04 PileTableau.hpp Page 2/2
#ifndef PILETABLEAU_HPP }
#define PILETABLEAU_HPP
#ifdef DEBUG
#include <iostream> friend std::ostream& operator<< (std::ostream &f, const PileTableau<T>& p) {
#include <cassert> f << "[ ";
/* for (int i=0; i<p.sp; i++)
* Cette classe générique implémente une pile. Les élements sont f << p.lesElements[i] << " ";
* mémorisés dans un tableau return f << "]";
* }
* @author Vincent Granet (vg@unice.fr) #endif // DEBUG
*/ };
template <typename T> #endif
class PileTableau {
private:
int sp; // l’indice du sommet de pile
int max; // nombre maximun d’éléments
T *lesElements; // tableau générique d’éléments de type T

/**
* Rôle : *this = *p
*
* les tailles des tableaux doivent être identiques
*/
void cloner (const PileTableau<T> & p) {
assert( this−>max == p.max);
for (int i=0; i<p.sp; i++) this−>lesElements[i] = p.lesElements[i];
this−>sp = p.sp;
}
public:
// constructeur
PileTableau(int n=100) : max(n), lesElements(new T[n]), sp(0) {}
// contructeur de copie
PileTableau (const PileTableau<T> &p) {
this−>cloner(p);
}
// destructeur
~PileTableau() {
delete [] this−>lesElements;
}

// surcharge de l’opérateur d’affectation


PileTableau<T> &operator=(const PileTableau<T> &p) {
this−>cloner(p);
return *this;
}
// les 4 primitives de manipulation de la pile
bool estVide(void) const {
return this−>sp==0;
}
void empiler(const T &x) {
assert(this−>sp<this−>max);
this−>lesElements[this−>sp++]=x;
}
void depiler(void) {
assert(!this−>estVide());
this−>sp−−;
}
const T &sommet(void) const {
assert(!this−>estVide());
return this−>lesElements[this−>sp−1];
mardi novembre 28, 2017 1/2 2/2 mardi novembre 28, 2017

Vous aimerez peut-être aussi