1.SeqStack。.h(头文件)
#ifndef SeqStack_H
#define SeqStack_H
const int StackSize=500;
template <class DataType>
class SeqStack
{
public:
SeqStack();
~SeqStack(){}
void Push(DataType x);
DataType Pop();
DataType GetTop();
int Empty();
DataType display();
private:
DataType data[StackSize];
int top;
};
{
top=-1;
}
template<class DataType>
void SeqStack<DataType>::Push(DataType x)
{
if(top==StackSize-1)throw"上溢";
top++;
data[top]=x;
}
template<class DataType>
DataType SeqStack<DataType>::Pop()
{
DataType x;
if(top==-1)throw "下溢";
}
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;
#ifndef SeqStack_H
#define SeqStack_H
const int StackSize=500;
template <class DataType>
class SeqStack
{
public:
SeqStack();
~SeqStack(){}
void Push(DataType x);
DataType Pop();
DataType GetTop();
int Empty();
DataType display();
private:
DataType data[StackSize];
int top;
};
#endif
2.SeqStack.cpp 源程序
#include"SeqStack。.h"template<class DataType>
SeqStack<DataType>::SeqStack(){
top=-1;
}
template<class DataType>
void SeqStack<DataType>::Push(DataType x)
{
if(top==StackSize-1)throw"上溢";
top++;
data[top]=x;
}
template<class DataType>
DataType SeqStack<DataType>::Pop()
{
DataType x;
if(top==-1)throw "下溢";
return x;
x=data[top--];
}
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"
void main()
{int i,a[200],n;
eqStack<int>S;
if(S.Empty())
cou t<<"栈为空"<<endl;
else
cout<<"栈非空"<<endl;
cout<<"要入栈元素的个数共有多少个?"<<endl;
cin>>n;
for(i=1;i<=n;i++)
{cout<<"要压入栈的第"<<i<<"个元素为:"<<endl;
cin>>a[i];
S.Push(a[i]);
}
cout<<"栈顶元素为"<<endl;
cout<<S.GetTop()<<endl;
cout<<"执行一次出栈操作"<<endl;
S.Pop();
cout<<"栈顶元素为"<<endl;
cout<<S.GetTop()<<endl;
}
编译结果: