/* * File: mystack.h * ---------------- * * Created by Julie Zelenski on 2/27/08. * */ #ifndef _mystack_h #define _mystack_h #include "genlib.h" #include "vector.h" template <typename ElemType> class MyStack { public: MyStack(); ~MyStack(); bool isEmpty(); void push(ElemType e); ElemType pop(); private: struct cellT { ElemType val; cellT *next; }; cellT * head; }; #include "mystack.cpp" #endif /* * File: mystack.cpp * ------------------ * * Created by Julie Zelenski on 2/27/08. * */ #include "mystack.h" template <typename ElemType> MyStack<ElemType>::MyStack() { head = NULL; } template <typename ElemType> MyStack<ElemType>::~MyStack() { // delete the entire list } template <typename ElemType> bool MyStack<ElemType>::isEmpty() { return (head == NULL); } template <typename ElemType> void MyStack<ElemType>::push(ElemType s) { cellT *newCell = new cellT; newCell->val = s; newCell->next = head; head = newCell; } template <typename ElemType> ElemType MyStack<ElemType>::pop() { if (isEmpty()) Error("pop empty stack"); ElemType top = head->val; cellT *old = head; head = head->next; delete old; return top; }
m_r_k