2010-05-13 59 views
0

我的結構定義。這個附加函數有什麼問題在C

typedef struct inner_list {char word[100]; inner_list*next;} inner_list; 
typedef struct outer_list 
{ char word [100]; 
inner_list * head; 
outer_list * next; } outer_list; 

和問題的一部分:

void append(outer_list **q,char num[100],inner_list *p) 
{ outer_list *temp,*r; 
    temp = *q; 

    char *str; 
    if(*q==NULL) 
    { temp = (outer_list *)malloc(sizeof(outer_list)); 
      strcpy(temp->word,num); 
      temp->head = p; 
      temp->next=NULL; 
      *q=temp; 
    } 
    else 
    { temp = *q; 
     while(temp->next !=NULL) 
     { temp=temp->next; 
     } 
     r = (outer_list *)malloc(sizeof(outer_list)); 
     strcpy(r->word,num); 
     temp->head = p; 
     r->next=NULL; 
     temp->next=r; 
    } 
} 

我不知道什麼是我做錯了這個附加功能,我將送一個字符數組和鏈表存儲另一鏈表。但我不能將鏈表存儲在另一個鏈表中。我無法弄清楚問題所在。有任何想法嗎?

+2

你可能應該解釋一下你期望這個代碼做什麼以及問題是什麼。 – 2010-05-13 14:19:21

+0

您應該也可能正式接受答案,以獎勵您的幫手的努力。 – torak 2010-05-13 15:59:43

回答

0

在else子句,你的代碼說

temp->head = p; 

應該說:

r->head = p; 

r是新創建的節點,所以要設置該節點的head。你正在做的是覆蓋現有節點的head字段。

+0

完美的人。我必須是瞎子或者某人。非常感謝。 8小時編碼讓我失明,我猜:D。非常感謝 – LuckySlevin 2010-05-13 14:39:55