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;
}
本文介绍了一个简单的C++栈实现——CStack类。该类使用链表作为底层数据结构,提供了基本的栈操作如Push(压栈)、Pop(出栈)和Size(获取栈大小)等方法。
222

被折叠的 条评论
为什么被折叠?



