只做人间不老仙 2020-10-20 15:45 采纳率: 0%
浏览 109

大话数据结构3.13循环链表 两个循环链表合并成一个 最后一句free(p)是不是有问题啊?

原书代码:

p = rearA->next;
rearA->next = rearB->next->next;
rearB->next = p;
free(p);

到最后free(p)之后,rearB->next指向的内存区域也被free掉了,那是不是rearB->next变成了野指针?这就不对了。还是我哪里想错了?

  • 写回答

1条回答 默认 最新

  • maolele2020 2022-10-23 10:04
    关注

    我也觉得他这里写错了,应该是要保留链表A的头结点,释放链表B的头结点,代码应该改成这样:

    BHead = rearB->next;
    rearB->next = rearA->next;
    rearA->next = BHead->next;
    free(BHead);
    
    评论

报告相同问题?