顺序栈的定义和初始化
#define maxsize 10
//顺序栈的定义
typedef struct{
int data[maxsize];
int top;
}SqStack;
//顺序栈的初始化
//top指针指向栈顶,一开始data[0]中没有存入元素,所以top不能为0
void InitStack(SqStack &s){
s.top=-1;//另一种方式top=0,表示top指向栈顶元素的下一个元素
}
判空
//栈的判空
bool Empty(SqStack s){
if(top==-1)//另一种初始化方式top=0
return true;
else
return false;
}
不同初始化方式的进栈
//进栈
bool Push(SqStack &s,int e){
//栈满,top从0开始
if(s.top==maxsize-1)
return false;
//top指向栈顶,先加一再存数据
s.data[++s.top]=e;
return true;
}
//另一种初始化方式top=0时,注意区分
bool Push(SqStack &s,int e){
//栈满,top从0开始
if(s.top==maxsize)
return false;
//top指向栈顶,先存数据再加一
s.data[s.top++]=e;
return true;
}
不同初始化方式的出栈
//出站,用x返回栈顶元素
bool Pop(SqStack &s,int &x){
//栈空
if(s.top=-1)
return false;
x=s.data[s.top];
s.top--;//读取栈顶元素的代码去掉这一句代码就好,其他完全一样
return true;
}
//另一种初始化方式top=0时,注意区分
bool Pop(SqStack &s,int &x){
//栈空
if(s.top==0)
return false;
s.top--;//top--之后才指向栈顶元素
x=s.data[s.top];
return true;
}