栈是一种操作受限的线性表。主要有两种存储方式,本文主要讲顺序栈的操作方式。
顺序栈的实现首先要利用一组地址连续的存储单元存放自栈底的到栈顶的数据元素。
1,定义栈的存储类型:
typedef struct{
ElemType data[Maxsize];//存放栈中的元素
int top;//栈顶指针
}Sqstack;
2,栈的初始化:
//对栈进行初始化
void InitStack(Sqstack &S){
S.top=-1;
}
3,判断栈空:
//判断是否为空栈
bool StackEmpty(Sqstack S){
if(S.top==-1)
return true;
else
return false;
}
4,进栈:
bool Push(Sqstack &S,ElemType x){
if(S.top==Maxsize-1)
return false;
S.top=S.top+1;
S.data[S.top]=x;
return true;
}
5,出栈:
bool Pop(Sqstack &S,ElemType &x){
if(S.top==-1)
return false;
x=S.data[S.top];