- 定义
#define MaxSize 10
typedef struct {
//定义数组存放栈中元素
int data[MaxSize];
//栈顶指针(记录栈顶下标)
int top;
}SeqStack;
- 初始化栈
/**
* 初始化栈
* @param S 顺序栈
*/
void InitStack(SeqStack &S){
S.top=-1;
}
- 入栈
/**
* 新元素入栈
* @param S 顺序栈
* @param x 入栈的元素
* @return
*/
bool Push(SeqStack &S,int x){
//栈满,报错
if(S.top==MaxSize-1)
return false;
//指针元素加1,新元素入栈
S.data[++S.top]=x;
}
- 出栈
/**
* 新元素出栈
* @param S 顺序栈
* @param x 出栈的元素
* @return
*/
bool Pop(SeqStack &S,int &x){
if(S.top==-1)
return false;
//栈顶元素先出栈,指针再减1(数据还残留在内存中,只是在逻辑上被删除了)
x=S.data[S.top--];
return true;
}
- 读取栈顶元素
/**
* 读取栈顶元素
* @param S
* @param x
* @return
*/
bool GetTop(SeqStack S,int &x){
if(S.top==-1)
return false;
//记录栈顶元素
x=S.data[S.top];
return true;
}
- 判断栈空
/**
* 判断栈是否为空
* @param S 顺序栈
* @return
*/
bool StackEmpty(SeqStack S){
if(S.top==-1)
return true;
else
return false;
}