我的结构定义。

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字段。

关于c - 这个附加函数在C中有什么问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2827494/

10-12 07:40
查看更多