戒掉黑眼圈 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日

悬赏问题

  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振
  • ¥20 pip2.40更新pip2.43时报错
  • ¥15 换yum源但仍然用不了httpd
  • ¥50 C# 使用DEVMOD设置打印机首选项
  • ¥15 麒麟V10 arm安装gdal