#ifndef stack_h #define stack_h typedef Complex TPELEM; class Stack { friend class StackIterador; private: int top_; int size_; TPELEM *elems_; public: void push( TPELEM i ); TPELEM top( void ); TPELEM pop( void ); int empty( void ); int full( void ); static Stack* create(int n); }; inline void Stack::push(TPELEM i) { elems_[++top_] = i; } inline TPELEM Stack::top(void) { return elems_[top_]; } inline TPELEM Stack::pop(void) { return elems_[top_--]; } inline int Stack::empty( void ) { return top_ == -1; } inline int Stack::full( void ) { return top_ == size_-1; } class StackIterador { private: int indElemPilha_; Stack* pPilha_; public: int fim( void ); TPELEM prox( void ); void percorrePilha( void ); void init( Stack *pPilha ); }; #endif