源代码:
文件1:SeqStack.h
# ifndef SeqStack_H
# define SeqStack_H
const int MaxSize=10;
template <class DataType>
class SeqStack
{
DataType data[MaxSize];
int top;
public:
SeqStack(){top=-1;}
~SeqStack();
void Push(DataType x);
DataType Pop();
DataType GetTop();
int Empty();
};
# endif
文件2:SeqStack.cpp
# include<iostream>
using namespace std;
# include "SeqStack.h"
template <class DataType>
SeqStack<DataType>::~SeqStack()
{
cout<<"Destroy SeqStack.\n";
}
template <class DataType>
void SeqStack<DataType>::Push(DataType x)
{
if(top==MaxSize-1) throw "上溢";
else {
top++;
data[top]=x;}
}
template <class DataType>
DataType SeqStack<DataType>::Pop()
{
DataType x;
if(top==-1) throw "下溢";
else
x=data[top--];
return x;
}
template <class DataType>
DataType SeqStack<DataType>::GetTop()
{
if(top!=-1)
return data[top];
}
template <class DataType>
int SeqStack<DataType>::Empty()
{
if(top==-1) return 1;
else return 0;
}
文件3:SeqStack_main.cpp
# include<iostream>
using namespace std;
# include "SeqStack.cpp"
int main()
{
SeqStack<int>S;
if(S.Empty())
cout<<"The Stack is empty!"<<endl;
else
cout<<"THE Stack is not empty!"<<endl;
cout<<"对5和10执行入栈操作"<<endl;
S.Push(5);
S.Push(10);
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
cout<<"执行一次出栈操作"<<endl;
S.Pop();
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
return 0;
}
程序结果: