//stack.h template class Node { public: Node(nodeT data, Node* next); nodeT getData() const; Node* NextNode; private: nodeT NodeData; }; template class Stack { public: Stack (); bool isEmpty(); bool push(stackT data); stackT pop(); private: Node* HeadNode; }; //stack.cpp #include #include "stack.h" template Node::Node(nodeT data, Node* next) { NodeData = data; NextNode = next; } template nodeT Node::getData() const { return NodeData; } template Stack::Stack() { HeadNode = NULL; } template bool Stack::isEmpty(){ return (HeadNode == NULL) ? true : false; } template bool Stack::push(stackT data){ HeadNode = new Node(data, HeadNode); return true; } template stackT Stack::pop(){ Node* returnNode = HeadNode; stackT returnData = HeadNode->getData(); HeadNode = HeadNode->NextNode; delete returnNode; return returnData; } //test.cpp #include #include "stack.h" int main() { using std::cout; using std::endl; cout << "Initializing" << endl; Stack testS; testS.push(6); cout << testS.pop(); cout << endl; }