// stacktp.h -- a stack template #ifndef STACKTP_H_ #define STACKTP_H_ template class Stack { private: enum {MAX = 10}; // constant specific to class Type items[MAX]; // holds stack items int top; // index for top stack item public: Stack(); bool isempty(); bool isfull(); bool push(const Type & item); // add item to stack bool pop(Type & item); // pop top into item }; template Stack::Stack() { top = 0; } template bool Stack::isempty() { return top == 0; } template bool Stack::isfull() { return top == MAX; } template bool Stack::push(const Type & item) { if (top < MAX) { items[top++] = item; return true; } else return false; } template bool Stack::pop(Type & item) { if (top > 0) { item = items[--top]; return true; } else return false; } #endif