2 sungaochao sungaochao 于 2016.03.06 22:16 提问

这段代码有什么错误,为什么输入后就不能运行了??

#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");
}

}

2个回答

caozhy
caozhy   Ds   Rxr 2016.03.06 22:26
已采纳

S.base=S.top;
写反了
S.top=S.base;

WinsenJiansbomber
WinsenJiansbomber   2016.03.06 23:27

S.top++=e; 这种写法是要拉去打靶的,虽然编译通过,但是在软件开发中给后人的维护带来头痛感daba

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!