链式栈是一种数据存储结构,可以通过单链表的方式来实现,使用链式栈的优点在于它能够克服用数组实现的顺序栈空间利用率不高的特点,但是需要为每个栈元素分配额外的指针空间用来存放指针域。
下面我们使用模板实现一个简单链式栈:
StackNode.h
template<typename Type> class LinkStack;
template<typename Type> class StackNode{
private:
friend class LinkStack<Type>;
StackNode(Type dt,StackNode<Type> *next=NULL):m_data(dt),m_pnext(next){}
private:
Type m_data;
StackNode<Type> *m_pnext;
};
LinkStack.h
#include "StackNode.h"
template<typename Type> class LinkStack{
public:
LinkStack():m_ptop(NULL){}
~LinkStack(){
MakeEmpty();
}
public:
void MakeEmpty(); //make the stack empty
void Push(const Type item); //push the data
Type Pop(); //pop the data
Type GetTop() const; //get the data
void Print();