template <class T> struct StackElem { StackElem(T d, StackElem *n) { data = d; next = n; } T data; StackElem *next; }; template <class T> class Stack { public: Stack(); ~Stack(); void Push(T x); T Pop(); private: StackElem<T> *head; };