首页 新闻 会员 周边 捐助

关于顺序表的一些问题

0
悬赏园豆:10 [已解决问题] 解决于 2021-10-04 16:28


为何最后一个数字是乱的呢
这个是代码部分
SeqList* MergeList(SeqList* L, SeqList* L1) {
int i, j, k;
i = 0; j = 0; k = 0;
SeqList* plus;
plus = (SeqList)malloc(sizeof(SeqList));
plus->last = 0;
while ((i != L->last)&&(j != L1->last)) {
if (L->number[i] <= L1->number[j]) {
plus->number[k] = L->number[i];
i++;
k++;
}
else {
plus->number[k] = L1->number[j];
j++;
k++;
}
}
while (i <=L->last) {
plus->number[k] = L->number[i];
i++;
k++;
}
while (j <=L1->last) {
plus->number[k] = L->number[j];
j++;
k++;
}
plus->last =L->last+L1->last;
return plus;
}
//输出操作
void outPut(SeqList
L) {
for (int i = 0; i <=L->last; i++) {
printf("%d ", L->number[i]);
}
}

新手小白。的主页 新手小白。 | 初学一级 | 园豆:75
提问于:2021-10-03 21:28
< >
分享
最佳答案
0

GDB (GUN Debugger)
开始吧!

有一个负数,难道是越界了?
合并功能?输入6个数,最后出来7个?

收获园豆:10
快乐的欧阳天美1114 | 老鸟四级 |园豆:4004 | 2021-10-03 22:12

typedef struct SeqList {
int number[MAXSIZE];
int last;
}SeqList;
我是定义了一个顺序表
写的合并的方法

新手小白。 | 园豆:75 (初学一级) | 2021-10-03 22:16


最后一个数为啥这样。。。

新手小白。 | 园豆:75 (初学一级) | 2021-10-03 22:18

@新手小白。:
所以要调试啊,这个值 看起来像个 地址,而不是数。
检查下 最后一个值的存储情况。
不要输入3个数,从1个数的list合并开始。

快乐的欧阳天美1114 | 园豆:4004 (老鸟四级) | 2021-10-04 01:13

@快乐的凡人721: 已经找到原因了,是我那个方法逻辑上有问题,非常感谢

新手小白。 | 园豆:75 (初学一级) | 2021-10-04 01:14

@新手小白。:
辛苦了啊!今早 吃好点,补补

快乐的欧阳天美1114 | 园豆:4004 (老鸟四级) | 2021-10-04 01:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册