文件1:LinkStack.h
源程序:
# ifndef LinkStack_H
# define LinkStack_H
const int MaxSize=100;
#include <iostream>
using namespace std;
template <class DataType>
class LinkStackNode {
public:
DataType data;
LinkStackNode<DataType>* next;
LinkStackNode(DataType& d) : data(d), next(NULL){}
};
template <class DataType>
class LinkStack
{
private:
LinkStackNode<DataType> * top;
public:
LinkStack(){top=NULL;}
~LinkStack();
void Push(DataType& value);
DataType Pop();
DataType GetTop();
int Empty();
};
# endif
文件2:LinkStack.cpp
源程序:
# include "LinkStack.h"
template<class DataType>
LinkStack<DataType>::~LinkStack()
{
delete top;
}
template<class DataType>
void LinkStack<DataType>::Push(DataType& value)
{
LinkStackNode<DataType>* addNode = new LinkStackNode<DataType>(value);
addNode->next = top;
top = addNode;
}
template<class DataType>
DataType LinkStack<DataType>::Pop()
{
DataType value = top->data;
LinkStackNode<DataType>* p = top;
top = top->next;
delete p;
return value;
}
template<class DataType>
DataType LinkStack<DataType>::GetTop()
{
if(top!=NULL) return top->data;
}
template<class DataType>
int LinkStack<DataType>::Empty()
{
if(top==NULL)return 1;
else return 0;
}
文件3:LinkStack_main.cpp
源程序:
# include<iostream>
using namespace std;
# include"LinkStack.cpp"
int main()
{
LinkStack <int>L;
if(L.Empty())
cout<<"The LinkStack is Empty!"<<endl;
else
cout<<"The LinkStack is not Empty!"<<endl;
int i;
for(i = 0; i < 5; ++i){
L.Push(i);
}
cout << L.GetTop() << endl;
for(i = 0; i < 3; i++)
{
cout << L.Pop() << endl;
}
cout << L.GetTop() << endl;
return 0;
}
程序结果: