前言
栈就是后进先出,可以比喻成手枪在射击的时候发出的子弹,最后压进弹夹的会被先打出来,实际应用在浏览器的后退等地方,下面的代码是栈的一些基本方法。
初始化
//初始化
void InitStack(SqStack &S){
S.top=-1;
};
判断栈空
//判断栈是否为空
bool StackEmpty(SqStack &S){
printf("%d \n",S.top);
if(S.top==-1){
return true;//为空
}else{
return false;//非空
}
}
进栈
//入栈
bool Push(SqStack &S,int i){
//首先判断栈是否已满
if(S.top==MaxSize-1){
return false;
} else{
S.data[++S.top]=i;//指针先加1再入栈
return true;
}
}
出栈
//出栈 e用来返回删除的栈顶元素
bool Pop(SqStack &S,int &e){
if(S.top==MaxSize-1){
return false;
}else{
e=S.data[S.top--];
return true;
}
}
读栈顶元素
//读取栈顶元素
bool GetTop(SqStack S,int &x){
if(S.top==-1){
return false;
}else{
x=S.data[S.top];
return true;
}
}
主函数调用
int main(){
SqStack S;
InitStack(S);
int e,x;
Push(S,1);
if(StackEmpty(S)){
printf("空\n");
}else{
printf("非空\n");
};
Pop(S,e);
if(StackEmpty(S)){
printf("空\n");
}else{
printf("非空\n");
};
printf("%d \n",e);
Push(S,3);
GetTop(S,x);
printf("%d \n",x);
}