已知la是带头结点的单链表的头指针,试编写逆须输出表中各元素的递归方法。(C语言)
请问下边写的哪错了?
#include<stdio.h>
struct S
{
int data;
struct S *link;
};
main()
{
void *fun(struct S *);
struct S *la,*p;
int i;
p=la;
scanf("%d",&i);
if(i!=0) /*i=0时输入结束。*/
{
p=(struct S *)malloc(sizeof(struct S));
p->data=i;
while(1)
{
scanf("%d",&i);
if(i==0)
break;
else
{
p->link=(struct S *)malloc(sizeof(struct S));
p=p->link;
p->data=i;
}
}
p->link=NULL;
fun(la);
free(la);
free(p);
}
else
printf("wu shu ju shu ru\n");
getch();
}
void *fun(struct S *la) /*逆输出线性链表。*/
{
printf("%d\n",la->data);
if(la->link!=NULL)
fun(la->link);
else
free(la);
}