链表实现堆栈比较简单。
只需要在链表的头部进行push和pop即可。
注意:pop和top操作需要由调用者进行判空操作,
否则程序会崩溃。
源代码:
MyStack.h
#include <iostream>
struct ListNode
{
int nData;
ListNode* pNext;
};
class MyStack
{
public:
MyStack() : m_pHead(NULL) {}
void Pop();
void Push(int data);
void Top();
bool Empty();
private:
ListNode* m_pHead;
};
MyStack.cpp
#include "MyStack.h"
void MyStack::pop()
{
ListNode* pPop = m_pHead;
m_pHead = m_pHead->pNext;
delete pPop;
}
void MyStack::Push(int data)
{
ListNode* pNew = new ListNode;
pNew->nData = data;
pNew->pNext = m_pHead;
m_pHead = pNew;
}
int MyStack::Top()
{
return m_pHead->nData;
}
bool MyStack::Empty()
{
return (NULL == m_pHead);
}