//【例7.9_h】链栈的类模板,本例为头文件"Ex7_9.h"。采用无头结点链表。 #include using namespace std; templateclass Stack; templateclass Node{ //链栈结点类模板 T info; Node *link; public: Node(T data=0,Node *next=NULL){ info=data; link=next; } friend class Stack; }; templateclass Stack{ //链栈类模板,无头结点链表 Node *top; //栈顶指针 public: Stack(){top=NULL;} ~Stack(); void Push(const T &data); //压栈 T Pop(); //弹出 T GetTop(); //取栈顶元素 void MakeEmpty(); //清空栈 bool IsEmpty(){return top==NULL;} }; template Stack::~Stack(){MakeEmpty();} templatevoid Stack::MakeEmpty(){ Node *temp; while(top!=NULL){temp=top;top=top->link;delete temp;} } template void Stack::Push(const T &data){ top=new Node(data,top); } template T Stack::Pop(){ assert(!IsEmpty()); Node *temp=top; T data=temp->info; top=top->link; //丢弃栈顶结点 delete temp; //释放栈顶结点 return data; //返回栈顶数据 } template T Stack::GetTop(){ assert(!IsEmpty()); return top->info; }