求助 (我使用的是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);
} 展开
#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);
} 展开
1个回答
展开全部
粗略看了一下,你的这个程序问题挺多的,
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);
}
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 广告
2024-10-28 广告
正版Hyperworks软件多少钱,购买正版Hyperworks软件,免费咨询Altair Hyperworks软件中国区网站首页,HyperWorks软件提供了完整的CAE有限元分析解决方案,免费试用和咨询官网。...
点击进入详情页
本回答由名片提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询