1 #include <iostream> 2 #include <cstdlib> 3 using namespace std; 4 5 6 class stack { 7 8 public: 9 stack(int n) : size(n), top(0) { 10 if (debflg) { 11 cout << "Ici constructeur de stack size = " << size << "\n"; 12 }; 13 A = (int *) malloc(size*sizeof(int)); 14 for (int i=0; i<size; i++) A[i] = 0; 15 }; 16 ~stack() { 17 free(A); 18 if (debflg) { 19 cout << "Ici destructeur de stack (size = " << size << ")\n"; 20 }; 21 }; 22 static void set_deb () { debflg=true;}; 23 static void clr_deb () { debflg=false;}; 24 void push (int); 25 int pop(); 26 int length() const {return top;}; 27 28 private: 29 const int size; 30 int *A; 31 int top; 32 static bool debflg; 33 34 }; 35 36 void stack::push (int i) { 37 if (top < size) { 38 A[top++] = i; 39 } 40 } 41 42 int stack::pop() { 43 if (top) { 44 return A[--top]; 45 } else { 46 return 0; 47 } 48 } 49 50 bool stack::debflg=false; 51 52 int main() { 53 stack::set_deb(); // je veux voir ce qui se passe 54 stack s(10); 55 srand(time(NULL)); 56 57 for (int i=0;i<15;i++) 58 { 59 int z = rand() % 1000; 60 s.push(z); 61 cout << "je mets dans la pile le nombre " << z << " (taille de la pile " << s.length() << ")\n"; 62 } 63 cout << "\n\n\n"; 64 for (int i=0; i<15; i++) { 65 cout << "je depile maintenant le nombre " << s.pop() << " (taille de la pile " << s.length() << ")\n"; 66 } 67 } 68 69