1.
表尾結點的next指針沒有賦值,導致指向野地址
2.
while循環多了壹個;
改了以後的:
typedef struct note
{int num;
struct note *next;}stu;
main()
{stu *r,*s,*head;
int i,k=1;
void fun(stu *head);
void add(stu *head);
head=r=(stu *)malloc(sizeof(stu));r->num=k++;
for(i=0;i<10;i++)
{s=(stu *)malloc(sizeof(stu));
r->next=s;
r=s;
s->num=k++;
s->next=NULL;/////////Erro1
}
fun(head);
add(head);
fun(head);
}
void fun( stu *head)
{stu *r=head;
if(head->next==NULL) printf("have a error");
else
{printf("head");
while(r->next!=NULL)/////////Erro2
{printf("->");
printf("%d", r->num);
r=r->next;}
}
}
void add(stu *head)
{stu *q,*p;
q=head->next;
head->next=NULL;
while(q)
{p=q;
q=q->next;
p->next=head->next;
head->next=p;}
}