求大神看下我的代码哪里出了问题,c语言的栈!
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define maxsize 100
#define incresize 10
typedef int selemtype;
typedef int status;
typedef struct{
selemtype *base;
selemtype *top;
int stacksize;
}sqstack;
status initstack(sqstack &s)
{
s.base=(selemtype *)malloc(maxsize * sizeof(selemtype));
if(!s.base)
return 0;
s.top=s.base;
s.stacksize=maxsize;
return 1;
}
status pop(sqstack &s,selemtype &e)
{
if(s.top==s.base)
return 0;
e=*--s.top;
return 1;
}
status push(sqstack &s,selemtype e)
{
if(s.top-s.base>=s.stacksize)
{
s.base=(selemtype *)realloc(s.base,(s.stacksize+incresize) *sizeof(selemtype));
if(!s.base)
return 0;
s.top=s.base+s.stacksize;
s.stacksize+=incresize;
}
*s.top++=e;
return 1;
}
void main()
{
sqstack s;
initstack(s);
int i,n;
selemtype *e;
printf("请输入入栈的个数: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",e);
push(s,*e);
}
}
为什么我只能输入一个数,敲下回车然后就卡住了,最后直接弹出去了。。。。头大
你的selemtype *e;中的e没有分配内存,是个野指针,对它内容操作,程序奔溃
在定义后面加
e=(selemtype *)malloc(sizeof(selemtype));
(其实你完全可以不用指针的)
另外,你没有输入
再有,不要写void main(),它是非标准写法,多个编译器不支持的
改过的程序及结果
上一篇:怎样调整主板风扇转速?