问题描述
- 这段代码有什么错误,为什么输入后就不能运行了??
-
#include
#define MAX 100//顺序栈的定义
typedef struct{
int *base;
int *top;
int stacksize;
}SqStack;//初始化
int InitStack(SqStack &S){
S.base=new int[MAX];
if(!S.base){
return 0;
}
S.base=S.top;
S.stacksize=MAX;
return 1;
}//入栈
int Push_S(SqStack &S,int e){
//将元素e入栈
if(S.top-S.base==S.stacksize){//判断栈是否满
return 0;
}
S.top++=e;
//S.top+=1;
return 1;
}
//出栈
int Pop_S(SqStack &S,int &e){
//用e返回出栈的元素
if(S.top==S.base){//栈空
return 0;
}
e=--S.top;
return 1;
}int main(){
SqStack S;
if(InitStack(S)){
printf("顺序栈初始化成功!n");
}else{
printf("顺序栈初始化失败!n");
}printf("请输入入栈元素:"); int e1; scanf("%d",&e1); if(Push_S(S,e1)){ printf("入栈成功!n"); }else{ printf("入栈失败!n"); }
}
解决方案
S.base=S.top;
写反了
S.top=S.base;
解决方案二:
S.top++=e; 这种写法是要拉去打靶的,虽然编译通过,但是在软件开发中给后人的维护带来头痛感daba