戒掉黑眼圈 2022-08-23 04:27 采纳率: 100%
浏览 53
已结题

关于#链表#的问题,如何解决?

问题遇到的现象和发生背景

C语言单链表 出现异常Segmentation fault

问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>

typedef struct Node
{
  int id;
  struct Node * next;
}Node, LinkList;

int InitList(LinkList * linkList)
{
  linkList = (Node *)malloc(sizeof(Node));
  if (linkList == NULL)
    return 0;
  linkList->next = NULL;
  return 1;
}

int InsertNode(LinkList * linkList, int pos, int elem)
{
  if (pos < 1)
    return 0;
  Node * p = linkList;
  int j = 0;
  while (j < pos - 1 && p != NULL)
  {
    j++;
    p = p->next;
  }
  Node * s = (Node *)malloc(sizeof(Node));
  if (s == NULL)
    return 0;
  s->id = elem;
  s->next = p->next;
  p->next = s;
  return 1;
}

void main()
{
  Node * head;
  InitList(head);
  // printf("初始化成功\n");
  InsertNode(head, 1, 10);
  // printf("插入成功\n");
}

运行结果及报错内容

img

我的解答思路和尝试过的方法

暂无思路

我想要达到的结果

解决并明白其中的原理

  • 写回答

4条回答 默认 最新

  • 私房菜 移动开发领域优质创作者 2022-08-23 10:42
    关注

    上面两个是误导人了。
    根本原因不在那里,楼主的pos 是1,while 循环压根进不去

    
    int InitList(LinkList **linkList)
    {
      *linkList = (Node *)malloc(sizeof(Node));
      if (*linkList != NULL) {
        *linkList->next = NULL;
         return 1;
      }
    
      return 0;
    }
    

    这个函数这样改,然后main 里面传入 &head

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 8月31日
  • 已采纳回答 8月23日
  • 创建了问题 8月23日

悬赏问题

  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿