#include #include "stack-ce.h" #include "stack-ce_iterator.h" //-------------------------------------------- // Construtor //-------------------------------------------- StackCE::StackCE(int size) : Stack() { #ifdef _stack_complex_ std::cout<<"\n Construindo pilha - vetor de complex\n"; #else std::cout<<"\n Construindo pilha - vetor de float\n"; #endif data_ = new TPELEM[size]; topIndex_ = -1; this->size_ = size; } //-------------------------------------------- // Destructor //-------------------------------------------- StackCE::~StackCE() { #ifdef _stack_complex_ std::cout<<"\n Removendo pilha - vetor de complex\n"; #else std::cout<<"\n Removendo pilha - vetor de float\n"; #endif delete [] data_; } //-------------------------------------------- // Stack Methods //-------------------------------------------- void StackCE::push(TPELEM n) { if( isFull() ) { // reallocate data vector !!! TPELEM *data2 = new TPELEM[2*size_]; for(int i=0; i<= topIndex_; ++i) { data2[i] = data_[i]; } delete [] data_; size_ *= 2; data_ = data2; } data_[++topIndex_] = n; } TPELEM StackCE::pop() { if( isEmpty() ) { std::cerr<<"\nErro: nao pode fazer pop em pilha vazia"; return -99999; //exit(-1); } return data_[topIndex_--]; } TPELEM StackCE::top() { if( isEmpty() ) { std::cerr<<"\nErro: nao pode fazer top em pilha vazia"; return -99999; //exit(-1); } return data_[topIndex_]; } //-------------------------------------------- // Iterator Methods //-------------------------------------------- StackIterator *StackCE::iterator() { return new StackCEIterator(this); }