void Merge2List(sqlist La, sqlist Lb, sqlist Lc) La Lb合并为Lc 并按照递减顺序
时间: 2023-08-16 14:09:12 浏览: 138
exp3_3_Merge_SqList_M.cpp
好的,您的问题是如何将两个有序的顺序表 La 和 Lb 按照递减的顺序合并为一个顺序表 Lc。
下面是合并算法的实现:
```
void Merge2List(sqlist La, sqlist Lb, sqlist Lc) {
int i = La.length - 1;
int j = Lb.length - 1;
int k = 0;
while (i >= 0 && j >= 0) {
if (La.data[i] >= Lb.data[j]) {
Lc.data[k++] = La.data[i--];
} else {
Lc.data[k++] = Lb.data[j--];
}
}
while (i >= 0) {
Lc.data[k++] = La.data[i--];
}
while (j >= 0) {
Lc.data[k++] = Lb.data[j--];
}
Lc.length = k;
}
```
具体思路是从两个顺序表的末尾开始比较,将较大的元素放入目标表 Lc 中,然后依次向前移动指针。最后,将未处理的元素依次放入目标表 Lc 中即可。
注意,这里假设顺序表中的元素是整数类型,且顺序表是使用结构体 sqlist 来表示的。您可以根据具体情况进行修改。
阅读全文