C++编译没问题 但是一运行就显示已停止工作 代码给出 谢谢

#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#define maxsize 100
typedef char SElemtype;
typedef struct
{ SElemtype data[maxsize];
SElemtype *base;
SElemtype *top;
int stacksize;}Sqstack;
bool Initstack(Sqstack *&s)
{s->base=new SElemtype [maxsize];
if (!s->base ) return 0;
s->top=s->base;
s->stacksize =maxsize;
return 1;}
bool Push (Sqstack *&s,SElemtype e)
{if(s->top-s->base==s->stacksize)
return 0;
*s->top++=e;
return 1;}
bool Pop(Sqstack *&s,SElemtype e)
{if (s->top==s->base) return 0;
e=*--s->top; return 1;}
void Destroystack(Sqstack *&s)
{free(s);}
bool GetTop(Sqstack *&s,SElemtype e)
{if (s->top==s->base)
return 0;
e=*(s->top-1);
return 1;}
bool stackEmpty (Sqstack *s)
{if (s->top==s->base) return 0;
else return 1;}
void main()
{SElemtype e; Sqstack *s;
Initstack(s);
Push(s,'a');
Push(s,'b');
Push(s,'b');
Push(s,'d');
stackEmpty(s);
GetTop(s,e);
printf("栈顶元素是%d",e);
Pop(s,e);
printf("出栈元素是%d",e);
Destroystack (s);
}

崩溃问题是由于没有初始化引起的,正确代码如下:
SElemtype e=0;
Sqstack *s = new Sqstack();
至于其他的逻辑问题自己慢慢调试吧。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-04
e初始化了吗?