顺序栈
头文件:
#ifndefseqstack_H
#defineseqstack_H
constint stackSize=10;
template<classdatatype>
classseqstack
{
public:
seqstack();
~seqstack(){}
void Push(datatype x);
datatype Pop();
datatype GetTop();
int Empty();
private:
datatype data[stackSize];
int top;
};
#endif
类定义:
#include"seqstack.h"
template<classdatatype>
seqstack<datatype>::seqstack()
{
top=-1;
}
template<classdatatype>
voidseqstack<datatype>::Push(datatype x)
{
if (top==stackSize-1) throw"上溢";
top++;
data[top]=x;
}
template<classdatatype>
datatypeseqstack<datatype>::Pop()
{
datatype x;
if(top==-1) throw"上溢";
x=data[top--];
return x;
}
template<classdatatype>
datatypeseqstack<datatype>::GetTop()
{
if(top!=-1)
return data[top];
return false; //if里面不成立会导致无返回值, 出现warning,需加入此语句
}
template<classdatatype>
intseqstack<datatype>::Empty()
{
if(top==-1)return 1;
else return 0;
}
主函数:
#include<iostream>
usingnamespace std;
#include"seqstack.cpp"
voidmain()
{
seqstack<int>S;
if(S.Empty())
cout<<"栈为空"<<endl;
else
cout<<"栈非空"<<endl;
cout<<"对88和66执行入栈操作"<<endl;
S.Push(88);
S.Push(66);
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
S.Pop();
cout<<"栈顶元素为:"<<endl;
cout<<S.GetTop()<<endl;
}
结果:
栈为空
对88和66执行入栈操作
栈顶元素为:
66
栈顶元素为:
88