stack.h typedef struct _tagNode...{ int _nData; _tagNode* _pNext;} NODE,*LPNODE;class CStack ...{public: CStack(); virtual ~CStack();public: bool Pop(int& nData); bool Push(int nData); int Size() const;protected: LPNODE m_pTop; int m_nSize;}; stack.cpp CStack::CStack()...{ m_pTop = NULL; m_nSize = 0;}CStack::~CStack()...{ int nData = 0; while(Pop(nData)); }bool CStack::Push(int nData)...{ LPNODE pNew = new NODE; if (NULL == pNew) return false; pNew->_nData = nData; pNew->_pNext = m_pTop; m_pTop = pNew; m_nSize++; return true;}bool CStack::Pop(int& nData)...{ if (NULL == m_pTop) return false; LPNODE pNextNode = m_pTop->_pNext; nData = m_pTop->_nData; delete m_pTop; m_pTop = pNextNode; m_nSize--; return true;}int CStack::Size() const...{ return m_nSize;}