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