程序出现exe已停止工作,问题无法解决
程序代码:#include"stdio.h"
#include"malloc.h"
#include"stdlib.h"
#define STACK 10
#define INIT 100
typedef struct
{
int *base;
int *top;
int stacksize;
}Sqstack;
/*********构造栈***********/
void initstack(Sqstack *s)
{
s->base=(int *)malloc(INIT * sizeof(int));
s->top=s->base;
s->stacksize=INIT;
}
/**********显示栈顶元素**********/
void gettop(Sqstack *s,int e)
{
if(s->top==s->base)
return ;
e=*(s->top-1);
}
/*************插入新的栈顶元素*************/
void push(Sqstack *s,int e)
{
if(s->top-s->base>=s->stacksize)
{
//栈满,追加存储空间
s->base=(int *)realloc(s->base,(s->stacksize+STACK) * sizeof(int));
if(!s->base)
exit (0); //存储分配失败
s->top=s->base+s->stacksize;
s->stacksize+=STACK;
}
printf("请输入要插入的栈顶元素:");
scanf("%d",&e);
*s->top=e;
s->top++;
}
/***********删除栈顶元素************/
void pop(Sqstack *s,int e)
{
if(s->top==s->base)
return ;
s->top--;
e=*s->top;
}
void main()
{
Sqstack *a=0;
int n,k,e=0,i;
printf("以下进行栈的相关操作\n");
initstack(a);
printf("请输入构建栈的数据个数:");
scanf("%d",&n);
if(n>=a->stacksize)
{
//栈满,追加存储空间
a->base=(int *)realloc(a->base,(a->stacksize+STACK) * sizeof(int));
if(!a->base)
exit (0);
}
for(i=0;i<n;i++)
{
printf("输入元素:");
scanf("%d",a->top);
a->top++; //s->top指栈内地址
}
//此处需要存储的数据都已经放在了栈S里面
printf("请选择要进行的操作\n");
printf("1.显示栈顶元素\n");
printf("2.插入新的栈顶元素\n");
printf("3.删除栈顶元素\n");
printf("选择的操作为:");
scanf("%d",&k);
if(k==1)
{
gettop(a,e);
printf("栈顶元素为%d",e);
}
if(k==2)
{
push(a,e);
printf("形成的新栈为:");
for(i=0;i<n+1;i++)
scanf("%d",a->top);
}
if(k==3)
{
pop(a,e);
printf("要删除的栈顶元素为%d",e);
}
}









你有没有认真的学过指针呢。 