#include "Pila.hh" Pila::Pila() { A = new char[DIM_MAX]; top = 0; dim = DIM_MAX; } Pila::~Pila() { delete[] A; } void Pila::push(char x) { if (top == DIM_MAX) raddoppia(); A[top] = x; ++top; } char Pila::pop() { if (empty()) // Utilizzo `@' come un simbolo speciale // poiche' non sara' mai all'interno di una espressione. return '@'; --top; return A[top]; } bool Pila::empty() const { if (top == 0) return true; else return false; } unsigned int Pila::capacita() const { return dim; } unsigned int Pila::num_elementi() const { return top; } void Pila::raddoppia() { char* tmp = new char[2*dim]; for (int i = 0; i < dim; ++i) tmp[i] = A[i]; delete[] A; dim = dim + DIM_MAX; A = tmp; }