C语言结构一处出错

来源:百度知道 编辑:UC知道 时间:2024/06/21 23:13:39
#include<stdio.h>
struct slist
{
int data;
struct slist *next;
}
struct *student()
{ int c;
struct slist *s,*h,*r;
h=(struct slist*)malloc(sizeof(struct slist));
r=h;
scanf("%d",&c);
while(c!=-1)
{s=(struct slist*)malloc(sizeof(struct slist));
s->data=c;r->next=s;r=s;
scanf("%d",&c);
}
r->next=NULL;
return h;
}

main()
{ struct slist *head,*r;
head=student();
r=head;
while(r->next!=NULL){
printf("%d",r->data);
r=r->next;}
}
帮改下,我不知道怎么改啊!
箭头指在这里 struct *student()
什么意思的struct
我改过了 struct slist *student() 一样 你下的 r->data是错了
可以调下 再告诉我答案么

slist* student()改成这个``编译通过`

你是这样写的吗?这个是指针的拓展问题,指针的函数,函数的指针,指针的指针等等概念,请参照书上的讲解。
另,按照程序的执行顺序,你用r->data是没有意义的,因为最后返回的结果只有r->next->data才有内容。

#include<stdio.h>
struct slist
{
int data;
struct slist *next;
} ;

struct slist *student()
{ int c;
struct slist *s,*h,*r;
h=(struct slist*)malloc(sizeof(struct slist));
r=h;
scanf("%d",&c);
while(c!=-1)
{s=(struct slist*)malloc(sizeof(struct slist));
s->data=c;r->next=s;r=s;
scanf("%d",&c);
}
r->next=NULL;
return h;
}

main()
{
struct slist *head,*r;
head=student();
r=head;
while(r->next!=NULL){
printf("%d",r->next->data);
r=r->next;}
}

//---------------2009-03-26-00-57

你这里定义的是一个指针类型函数,而struct是定义结构体的关键字,不能在定义指针函数时使用,你应该改成
struct slist *student()