// tStack1.h #pragma once #include template class Stack { public: Stack(int size=10); ~Stack(); void push(const T&); // push element void pop(); // pop element T top() const; // return top element bool isEmpty() const; // return true if empty. private: int nElems; // current number of elements int maxElems; // maximum number of elements T *elems; // elements }; template Stack::Stack(int size): nElems(0), maxElems(size) { elems = new T[size]; } template Stack::~Stack() { delete[] elems; } template bool Stack::isEmpty() const { return nElems<=0; } template void Stack::push(const T& elem) { assert(nElems void Stack::pop() { assert(nElems>0); nElems--; } template T Stack::top() const { assert(nElems>0); return elems[nElems-1]; }