#include #include "stack-le.h" #include "stack-le_iterator.h" namespace StackLib { //-------------------------------------------- // Construtor //-------------------------------------------- StackLE::StackLE() : Stack() { std::cout<<"\n Criando pilha - lista encadeada\n"; top_ = 0L; } //-------------------------------------------- // Destructor //-------------------------------------------- StackLE::~StackLE() { std::cout<<"\n Removendo pilha - lista encadeada\n"; elemPilha* aux = top_; while( top_ != 0L ) { top_ = top_->next_; delete aux; // delete previous element aux = top_; } } //-------------------------------------------- // Stack Methods //-------------------------------------------- void StackLE::push(int n) { elemPilha *elemInserir = new elemPilha(top_, n); top_ = elemInserir; } int StackLE::pop() { if( isEmpty() ) { std::cerr<<"\nErro: nao pode fazer pop em pilha vazia"; return -99999; //exit(-1); } elemPilha *elemRetirar = top_; top_ = top_->next_; int v = elemRetirar->value_; delete elemRetirar; return v; } int StackLE::top() { if( isEmpty() ){ std::cerr<<"\nErro: nao pode fazer top em pilha vazia"; return -99999; //exit(-1); } return top_->value_; } //-------------------------------------------- // Iterator Methods //-------------------------------------------- StackIterator *StackLE::iterator() { return new StackLEIterator(this); } }