这段简单链表那里错啦?

来源:百度知道 编辑:UC知道 时间:2024/06/29 21:12:00
如果 不用函数调用 全部写到main函数里 不出现错误

想下面这样函数调用者 到第2个函数的时候出现内存错误啦

什么原因?

#include <stdio.h>
#include <stdlib.h>
void xj(struct data *f);
void tj(struct data *f);

struct data {int v; struct data *next; }*one,*two;
main()
{

xj(one);
tj(one);
system("pause");

}

void xj(struct data *f)
{

struct data *head=NULL;
f=(data *)malloc(sizeof(struct data));
f->next=head;
head=f;
f->v=1;
printf("%d\n",f->v);

}
void tj(struct data *f)
{

two=(data *)malloc(sizeof(struct data));
f->next=two;
two->next=NULL;
two->v=2;
printf("%d\n",two->v);

}
代码怎么啦?那里错啦 请指出来吧

#include <stdio.h>
#include <stdlib.h>
void xj(struct data *f);
void tj(struct data *f);

struct data
{int v;
struct data *next; }*one,*two;
void xj(struct data *f)
{
struct data *head=NULL;
f=(struct data *)malloc(sizeof(struct data));
f->next=head;
head=f;
f->v=1;
printf("%d\n",f->v);

}
void tj(struct data *f)
{

two=(struct data *)malloc(sizeof(struct data));
f->next=two;
two->next=NULL;
two->v=2;
printf("%d\n",two->v);

}
main()
{

xj(one);
tj(one);
system("pause");

} 帮你改好了自己看看。。我没看你内容就帮你改了错误。。
错在f=(data *)malloc(sizeof(struct data));
错在two=(data *)malloc(sizeof(struct data));

你的两个函数都用了值传递,改成
void xj(struct data *&f)
void tj(struct data *&f)
即可

你的这段代码,只是main()函数缺少类型说明符