#define Maxsize 100 //定义数组的最大值
typedef Struct Stack{ //定义顺序栈的结构体
Element Data[Maxsize];
int top;
}SqStack;
void InitStack(SqStack &S){//初始化栈
S.top=-1;
}
bool Push(SqStack &S,Element &x){ //将元素压进栈
if(S.top==Maxsize-1) return false; //栈满,则返回false,不进行操作
S.Data[++top]=x; return true;
}
bool Pop(SqStack &S,Element &x){ //将元素出栈
if(S.top==-1) return false; //栈空,则返回false,不进行操作
x = S.Data[top--]; return true; //x保存栈顶元素后,出栈,将top指向栈顶元素的下一位置
}
bool GetTop(SqStack &S,Element &x){//读取栈顶元素
if(S.top==-1) return false; //栈空,则返回false,不进行操作
x==S.Data[top]; //读取栈顶元素,保存到x中
}
栈的应用非常广泛,例如串的匹配(KMP算法)、括号匹配、中缀表达式以及后续二叉树的层次遍历、图的遍历等,都需要借助栈来完成算法。因此打好基础,掌握栈的性质和基本操作是非常非常重要的。