You need to enable JavaScript to run this app. C++数据结构多链表统计作业报退出码134(SIGABRT)原因求助
优惠活动
大模型
产品
解决方案
定价
更多

C++数据结构多链表统计作业报退出码134(SIGABRT)原因求助

exit code 134(SIGABRT)触发原因定位

这类中断是程序访问非法内存、触发内存保护机制时被系统强制终止的信号,结合你写的代码,触发点全部来自以下几处问题:

  • 数组越界访问(直接触发SIGABRT的核心原因)
    代码中随机元素生成范围是0~50,覆盖共51个整数取值。但定义的计数数组NumbersList[50]、CheckingList[50]长度仅为50,C++定长数组的有效下标范围是0到数组长度减1,也就是这两个数组根本没有预留下标为50的存储位置。当随机生成的element值为50时,代码执行CheckingList[element]、NumbersList[element]这类读写操作时,会直接访问数组边界外的非法内存,触发操作系统内存保护,直接发送SIGABRT终止程序。
  • 数组初始化语法完全失效
    代码中写的CheckingList[50]={0}; 不仅没有达到“每处理一条链表前重置去重标记”的目的,本身也是一处越界访问:这行代码的语义是给数组下标为50的位置(本身是非法越界位置)赋值为0,完全没有遍历数组、把0~49所有位置清零的效果。每轮外层循环处理新链表时,上一轮残留的CheckingList标记值会保留,导致后续链表中出现的重复元素被错误判定为“当前链表已存在”,计数逻辑完全失效。
  • 循环边界多算1次
    节点插入循环写为for(j=0;j<=listsize;j++),实际插入的节点数为listsize+1,会导致每条链表长度在101201范围,和需求要求的100200范围不符。
  • 链表实例复用错误
    main函数中仅创建了1个linkedlistCreation对象,用户输入的k条独立链表的所有节点都被插入同一个单链表结构中,完全没有实现“为每个链表单独生成”的逻辑要求。
对应修复方向
  • 调整两个计数数组的长度为51,完整覆盖0~50的元素下标范围:int NumbersList[51] = {0}; int CheckingList[51] = {0};
  • 替换错误的数组初始化逻辑,每轮外层循环处理新链表前,对CheckingList的所有位置做全量清零,比如通过循环赋值、fill(CheckingList, CheckingList + 51, 0) 的方式实现重置,删除那行无效的CheckingList[50]={0}代码
  • 修正节点插入的循环条件为for(j = 0; j < listsize; j++),匹配要求的链表长度范围
  • 每处理一条新链表时,新建独立的linkedlistCreation实例,不要所有链表共用同一个对象
  • 最终筛选output数组时,元素判断阈值要注意边界:至少出现在半数及以上链表中,对应阈值为NumbersList[i] >= (k + 1) / 2(避免整数除法导致的奇数k场景下阈值偏低的问题),遍历范围覆盖0~50所有可能的元素值,把符合条件的元素存入output数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 22:45:06