用list实现stack

来源:互联网 发布:linux命名规范 编辑:程序博客网 时间:2024/04/29 05:55

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;
}
原创粉丝点击