You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linked List插入函数单列表使用正常 多列表调用触发Segmentation Fault

问题排查与修复方案

错误根因

  • C语言中未初始化的局部栈变量值是不确定的,你在main中声明的LL *head1, *head2;本质是野指针,而非你预期的空值NULL。
  • 仅测试单个链表时,大概率对应栈空间的残留值刚好为0(即NULL),insert函数可以正常执行;同时声明两个头指针时,第二个指针的初始值通常为非法内存地址,insert函数判断if(!head)不成立,直接访问head->next就会触发段错误。

修复方案

修改main函数中头指针的声明,手动初始化为NULL即可解决问题:

LL *head1 = NULL, *head2 = NULL;

代码优化建议

你实现的insert函数存在冗余逻辑,else if(!head->next)分支的逻辑已经被后续的while循环完全覆盖,可以直接去掉简化代码:

LL *insert(LL *head, int item)
{
    if(!head)
        return makeNode(item);
    LL *tmp = head;
    while(tmp->next)
        tmp = tmp->next;
    tmp->next = makeNode(item);
    return head;
}

额外提示:生产环境使用malloc时建议增加返回值校验,避免内存分配失败导致后续空指针访问。

内容的提问来源于stack exchange,提问作者Mithran Kesavan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 01:15:04