【问题标题】:What is wrong with this append func in CC中的这个附加函数有什么问题
【发布时间】:2010-05-13 14:17:00
【问题描述】:

我的结构定义。

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 数组和一个链表来存储另一个链表。但我不能将链表存储在另一个链表中。我无法弄清楚问题所在。有什么想法吗?

【问题讨论】:

  • 您可能应该解释一下您希望这段代码做什么以及问题是什么。
  • 你应该也正式接受这个答案,以奖励你的助手的努力。

标签: c struct linked-list


【解决方案1】:

在 else 子句中,你的代码在哪里

temp->head = p;

应该说:

r->head = p;

r 是新创建的节点,因此您要设置该节点的head。您正在做的是覆盖现有节点的 head 字段。

【讨论】:

  • 完美男人。我一定是盲人或某事。非常感谢。我猜 8 小时的编码让我失明了:D。非常感谢
猜你喜欢
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-09
  • 1970-01-01
  • 2017-03-26
相关资源
最近更新 更多