戒掉黑眼圈 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 如何实验stm32主通道和互补通道独立输出
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题