顺序栈采用的是用数组存储的方式
顺序栈的特点:只允许在栈顶插入和删除元素,且 先入后出
#include<iostream>
using namespace std;
const int StackSize=10;
template<class DataType>
class SeqStack
{
private:
DataType data[StackSize];
int top;
public:
SeqStack()//构造函数,初始化一个空栈
{
top=-1;
}
~SeqStack(){};//析构函数
void Push(DataType x);//入栈操作
DataType Pop();//出栈操作,将栈顶元素弹出
DataType getTop();//将栈顶元素取出
int Empty();//判断栈是否为空
};
template<class DataType>
void SeqStack<DataType>::Push(DataType x)
{
if(top==StackSize-1) throw "上溢";
top+=1;
data[top]=x;
}
template<class DataType>
DataType SeqStack<DataType>::Pop()
{
if(top==-1)throw "下溢";
DataType x=data[top];
top-=1;
return x;
}
template<class DataType>
DataType SeqStack<DataType>::getTop()
{
if(top==-1) throw "下溢";
DataType x=data[top];
return x;
}
template<class DataType>
int SeqStack<DataType>::Empty()
{
if(top==-1)
{
return 1;
}
else
return 0;
}
int main()
{
SeqStack<int> s1;
int a[10];
for(int i=0;i<10;i++)
{
cin>>a[i];
s1.Push(a[i]);
}
while(s1.Empty()!=1)//因为不知道栈里面有多少元素,所以首先要判断
{
cout<<s1.Pop()<<endl;
}
}