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;
} ;
... {
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;
}
... {
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;
}