Ayluc 发表于 2019-4-19 16:32:24

C语言大佬帮帮忙

void Delete_same_element(Linklist head)
{
int a;
Linklist p,q;
p= head;
scanf("%d", &a);
while(p->next != NULL)
   {
      q= p->next;
      if(a==q->data)
      {
         p->next = q->next;
         q= NULL;
      }
      else
         p=p->next;
   }
}

这个free要插在哪?

如果把free放在 q=null之前可以运行但是会报
debug error
damage: after normal block(#52)at 0x003A0F78
大佬们看看怎么改

TOP_LK 发表于 2019-4-19 17:19:18

不用free吧

Croper 发表于 2019-4-19 17:21:16

你Linklist的定义呢?

wwhywhy 发表于 2019-4-20 10:24:33

函数定义中的:Linklist head是值复制,不是值引用。所以不能free的。
如果是引用的话,在你说的地方进行释放就可以了
页: [1]
查看完整版本: C语言大佬帮帮忙