#ifndef STACK_H #define STACK_H template class Stack { public: Stack() { size = 10 ; top = -1 ; stackPtr = new T[10] ;} Stack(int s) { size = s ; top = -1 ; stackPtr = new T[s] ;} ~Stack() { size = 0 ; top = - 1 ; delete [] stackPtr ; } int push(const T&); int pop(T&) ; // pop an element off the stack int isEmpty()const { return top == -1 ; } int isFull() const { return top == size - 1 ; } private: int size ; // Number of elements on Stack int top ; T* stackPtr ; } ; template int Stack::push(const T& item) { if (!isFull()) { stackPtr[++top] = item ; return 1 ; // push successful } return 0 ; // push unsuccessful } template int Stack::pop(T& popValue) { if (!isEmpty()) { popValue = stackPtr[top--] ; return 1 ; // pop successful } return 0 ; // pop unsuccessful } #endif