永发信息网

c语言堆栈代码运行错误

答案:2  悬赏:30  手机版
解决时间 2021-04-08 00:55
#include #include #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 typedef int status; int elem,N,i,k,m; #define OK 1 typedef struct{ int* top; int* base; int stacksize; }sqstack; sqstack *s; s->base=NULL; s->top=s->base; void InitStack(sqstack*s){ s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int)); s->top=s->base; s->stacksize=STACK_INIT_SIZE; } status push(sqstack *s,int elem){ if(s->top-s->base>=s->stacksize){ s->base=(int*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int)); s->top=s->base+s->stacksize; s->stacksize+=STACKINCREMENT; } *(s->top)=elem; ++s->top; return OK; } status pop(sqstack *s){ elem=*(s->top); --(s->top); return elem; } void main(){ InitStack(s); } 为什么运行直接崩溃
最佳答案
sqstack *s;
 s->base=NULL;
 s->top=s->base;这里指针s还没分配空间就直接使用当然运行奔溃了,请看如下修改:#include
#include
#define STACK_INIT_SIZE 100
#define STACKINCREMENT 10
typedef int status;
int elem,N,i,k,m;
#define OK 1
typedef struct{
 int* top;
 int* base;
 int stacksize;
}sqstack;
sqstack *s;
//s->base=NULL;
//s->top=s->base;缉弧光旧叱搅癸些含氓
void InitStack(sqstack* &s){ //这里改为指针引用,否则无作用
    s = (sqstack *)malloc(sizeof(sqstack));//加了这句,先为s分配空间
    s->base=(int*)malloc(STACK_INIT_SIZE*sizeof(int));
    s->top=s->base;
    s->stacksize=STACK_INIT_SIZE;
}
status push(sqstack *s,int elem){
 if(s->top-s->base>=s->stacksize){
  s->base=(int*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(int));
 s->top=s->base+s->stacksize;
 s->stacksize+=STACKINCREMENT;
 }
 *(s->top)=elem;
 ++s->top;
 return OK;
}
status pop(sqstack *s){
 elem=*(s->top);
 --(s->top);
 return elem;
}

void main(){
 InitStack(s);
 }
全部回答
void initstack(sqstack **s)//传递的应该是指针的地址 {     if (*s = (sqstack *)malloc(sizeof(sqstack)))//判断下返回值     {         //malloc成功         *s->base=(int*)malloc(stack_init_size*sizeof(int));         *s->top=s->base;         *s->stacksize=stack_init_size;     } }void main() {     initstack(&s);//传递的应该是指针的地址 }
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
西藏人为什么体味重
为什么手机版本的开心消消乐登录不上去QQ注册
单选题十月革命后成立的苏维埃俄国是一个什么
淘宝客如何使用,赚客吧里的淘宝客鹊桥是什么
北斗七星北极星怎么画,北斗七星和北极星怎么
假设要考查某企业生产的袋装牛奶质量是否达标
对于程序员找工作而言,计算机二级证书有用没
步步高x6有没有锁屏杂志
三月份插非州茉莉行吗
广州旺利建筑劳务有限公司我想知道这个在什么
火军读什么,一个山一个军念什么
从A,M,O,D中任选一个字母,下列事件为随机
表示友谊的古诗名句,关于友谊的名言名句
高考往届生的一些问题
如图是运动员踢足球的情景,下列分析正确的是
推荐资讯
石桅岩景区-亭地址在什么地方,想过去办事
慕斯奶茶地址在什么地方,想过去办事
6750000数字7在()位上,表示()个()
-Howmucharetheseshoes?-Sorry,________aremy
怎么才能知道耳洞的伤口有没有愈合好
想想那时我们的路是怎样走过 有一首歌,男女
厚德盲人康复按摩理疗院这个地址在什么地方,
1. 如果有一根长80厘米的铁丝,用这根铁丝围成
手机被偷了,能否找回来?
花开不知秋已去,雨来方觉冬已深是什么意思
单选题“学如逆水行舟,不进则退;心似平原走
结婚神父台词,结婚时神父的台词
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?