這個遞迴演算法,本身沒有問題,應該是你單鏈表建立的問題注意下出現-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
這個遞迴演算法,本身沒有問題,應該是你單鏈表建立的問題注意下出現-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