这个递归算法,本身没有问题,应该是你单链表建立的问题
注意下出现-842150451的位置是在第一个还是在最后,就是你链表的尾部还是头结点没有处理好
# include "stdio.h"
# include "malloc.h"
# define NULL 0
# define LEN sizeof(struct data)
typedef struct data
{
long num;
struct data *next;
}*Linklist;
struct data *create()
{
struct data *head,*p,*p1;
head=NULL;
p1=p=(struct data *)malloc(LEN);
scanf("%ld",&p->num);
while (p->num!=0)
{
if (head==NULL)
head=p;
else
p1->next=p;
p1=p;
p=(struct data *)malloc(LEN);
scanf("%ld",&p->num);
}
p1->next=NULL;
return head;
}
void Out(Linklist p)
{
if(p!=NULL)
{
Out(p->next);
printf("%d\t ",p->num);
}
}
void main()
{
Linklist head;
head=create();
Out(head);
}
结构体中的num改成data
-------------------------
这种值出现一般是变量没复制,或者数组和地址越界造成的。