求助 (我使用的是turbo c 3.0 编译器

#include<stdio.h>#include<malloc.h>structmstack{intdata;structmstack*next;};voidcreat... #include<stdio.h>
#include<malloc.h>

struct mstack{
int data;
struct mstack * next;
};

void create(struct mstack * l){
l=(struct mstack *) malloc(sizeof(struct mstack));
l->data=55555; //
l->next=0;
}

void push(int e,struct mstack * l){
struct mstack * p;
p=(struct mstack *) malloc(sizeof(struct mstack));
p->next=l->next;
p->data=e;
l->next=p;
free(p);
}

void main(){
struct mstack * l;
int numb;
int i;
create(l);
printf("length=%d",l->data); //?????这里输出应该是 55555 呀 调试时却是 767

for(i=0;i<4;i++){
scanf("%d",&numb);
push(numb,l);
}

scanf("%d",&numb);
}
展开
 我来答
yiye242
2007-09-25 · TA获得超过340个赞
知道答主
回答量:130
采纳率:0%
帮助的人:201万
展开全部
粗略看了一下,你的这个程序问题挺多的,
void create(struct mstack * l)//这里应该修改为:struct mstack *creat(struct mstack *l)表示要返回指针(栈首地址);
{
l=(struct mstack *) malloc(sizeof(struct mstack));
l->data=55555; //int范围只能是-32768到32767;
l->next=0; //这里常用l->next=NULL;
//后面再加上return l;
}

void push(int e,struct mstack * l){
struct mstack * p;
p=(struct mstack *) malloc(sizeof(struct mstack));
p->next=l->next;
p->data=e;
l->next=p;
free(p); //这个程序是入栈,所以p要保留;删去free(p);
}

void main(){
struct mstack * l;
int numb;
int i;
create(l); //这里修改为:l=create(l); 表示接受返回的栈首地址.
printf("length=%d",l->data); //?????现在应该明白为什么会出错了吧,第一,creat函数没有返回地址;第而:l->data超出整型int的范围了;
for(i=0;i<4;i++){
scanf("%d",&numb);
push(numb,l);
}
名片
2024-10-28 广告
正版Hyperworks软件多少钱,购买正版Hyperworks软件,免费咨询Altair Hyperworks软件中国区网站首页,HyperWorks软件提供了完整的CAE有限元分析解决方案,免费试用和咨询官网。... 点击进入详情页
本回答由名片提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式