数据结构问题C语言版,下面的程序为什么不能运行?错在哪里?要怎么改?

#include<stdio.h>inte;typedefstruct{int*top;int*base;intstacksize;}intinitstack(sqsta... #include <stdio.h>
int e;
typedef struct{
int *top;
int *base;
int stacksize;}
int initstack(sqstack s){
s.base=(int *)malloc(10*sizeof(int));
if(!s.base)exit(OVERFLOW);
s.top=s.base;
s.stacksize=10;
return 1;}
int push(int e){
if(s.top-s.base>=10){s.base=(int *)realloc(s.base,(s.stack+8)*sizeof(int));
if(!s.base)exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=8;}
*s.top++=e;
return 1;}
int pop()
{
if(s.top==s.base)return 0;
e=*--s.top;
return 1;}
main()
{int m;
for(int i=0;i<=3;i++)
{scanf("%d",&m);
push(m);}
for(i=0;i<=3;i++)
pop();}
展开
 我来答
百度网友9c011d0
2012-10-11 · 超过32用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:104万
展开全部
#include <stdio.h>
#include<stdlib.h>
int e;
typedef struct
{
int *top;
int *base;
int stacksize;
} sqstack;

int initstack(sqstack *s)
{
s->base=(int *)malloc(10*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base;
s->stacksize=10;
return 1;
}

int push(sqstack *s,int e)
{
if(s->top-s->base>=10)
{
s->base=(int *)realloc(s->base,(s->stacksize+8)*sizeof(int));
if(!s->base)
exit(0);
s->top=s->base+s->stacksize;
s->stacksize+=8;
}
*s->top++=e;
return 1;
}

int pop(sqstack *s)
{
if(s->top==s->base)
return 0;
e=*--s->top;
return 1;
}

int main()
{
sqstack s;
int m;
int i;
initstack(&s);
printf("请输入要入栈元素:\n");
for(i=0;i<=3;i++)
{
scanf("%d",&m);
push(&s,m);
}
printf("出栈元素顺序为:\n");
for(i=0;i<=3;i++)
{
pop(&s);
printf("%d\t",e);
}
printf("\n");
return 0;
}
帮你改好了,看一下吧,有问题还可以交流下!
r1renhw
2012-10-11 · TA获得超过1577个赞
知道小有建树答主
回答量:810
采纳率:100%
帮助的人:459万
展开全部
/*
修改后的,下面有结果
*/
#include <stdio.h>
# include "malloc.h"
# include "stdlib.h"
# define OVERFLOW -1
int e;
typedef struct
{
int *top;
int *base;
int stacksize;
}sqstack;////////////
int initstack(sqstack * s)
{
(* s).base=(int *)malloc(10*sizeof(int));
if(!(* s).base)
exit(OVERFLOW);
(* s).top=(* s).base;
(* s).stacksize=10;
return 1;
}
int push(sqstack * s,int e)//////////
{
if((* s).top-(* s).base>=10)
{
(* s).base=(int *)realloc((* s).base,((* s).stacksize+8)*sizeof(int));//////////
if(!(* s).base)
exit(OVERFLOW);
(* s).top=(* s).base+(* s).stacksize;
(* s).stacksize+=8;
}
*(* s).top++=e;
return 1;
}
int pop(sqstack * s)
{
if((* s).top==(* s).base)
return 0;
e=*--(* s).top;
return 1;
}
main()
{
sqstack s;
initstack(&s);
int m;
for(int i=0;i<=3;i++)
{
printf("请输入第%d个数据:",i+1);
scanf("%d",&m);
push(&s,m);
}
for(i=0;i<=3;i++)
{
pop(&s);
printf("%d ",e);
}
printf("\n");

}
/*
在vc++6.0中的输出结果:
------------------------
请输入第1个数据:1
请输入第2个数据:2
请输入第3个数据:3
请输入第4个数据:4
4 3 2 1
Press any key to continue
------------------------------
总结:
*/
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3b1b680
2012-10-11 · TA获得超过966个赞
知道小有建树答主
回答量:978
采纳率:33%
帮助的人:684万
展开全部
typedef struct那有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
爱我所爱_love
2012-10-11 · TA获得超过301个赞
知道小有建树答主
回答量:260
采纳率:50%
帮助的人:84.6万
展开全部
好乱呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式