[英]What is wrong with this append func in 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;
}
}
我不知道我在這個追加函數中做錯了什么,我要發送一個char數組和一個鏈表以存儲另一個鏈表。 但是我不能將鏈表存儲在另一個鏈表中。 我不知道問題所在。 有任何想法嗎?
在else子句中,您的代碼說
temp->head = p;
應該說:
r->head = p;
r
是新創建的節點,因此您要設置該節點的head
。 相反,您正在做的是覆蓋現有節點的head
字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.