昂代斯玛先生 2021-07-13 15:18 采纳率: 100%
浏览 24
已采纳

C语言数组下标问题debug

问题是:将两个同样长度的有序的线性表组合成一个有序的线性表
代码:

#define MaxSize 10
typedef struct{
    int Data[MaxSize];
    int Length;
}Seqlist;

Seqlist *MiddleNum(Seqlist *t1,Seqlist *t2){
    Seqlist *list1=t1,*list2=t2,*list3;
    list3->Length=list1->Length+list2->Length;
    int count=0,q=0,p=0;
    while(p<(list1->Length)&&q<(list2->Length)){
    if(list2->Data[q]<=list1->Data[p]){
        list3->Data[count]=list2->Data[q];
        q++;
        count++;
    }
    else{
        list3->Data[count]=list1->Data[p];
        p++;
        count++;
    }
    }
    printf("%d\n%d\n%d\n",p,q,count);
    return list3;
}

测试用例:
list1:3 4 5 8 9
list2:0 1 2 6 7
期望输出:
list3:0 1 2 3 4 5 6 7 8 9
Bug位置:
第一次进入if循环之后,list2->data[5]从7被误改成0了
求debug

img

img

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2021-07-13 15:26
    关注

    Seqlist *list1=t1,*list2=t2,list3;
    list3->Length=list1->Length+list2->Length;
    这里list3只是一个指针,接着就进行list3->操作,会崩溃的
    所以这里要先 list3 = (Seqlist
    )malloc(sizeof(Seqlist));
    然后 list3->Length=list1->Length+list2->Length;

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

报告相同问题?

问题事件

  • 已采纳回答 7月13日
  • 创建了问题 7月13日

悬赏问题

  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决