Что не так с этим дополнением func в C - PullRequest
0 голосов
/ 13 мая 2010

Мои определения структур.

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;
     }
}

Я не знаю, что я делаю неправильно в этой функции добавления. Я отправляю массив символов и связанный список для сохранения другого связанного списка. Но я не могу сохранить связанный список в другом связанном списке. Я не мог понять проблему. Есть идеи?

1 Ответ

0 голосов
/ 13 мая 2010

В предложении else, где ваш код говорит

temp->head = p;

Это должно сказать:

r->head = p;

r - это вновь созданный узел, поэтому вы хотите установить head для этого узла Вместо этого вы перезаписываете поле head существующего узла.

...