#include <stdbool.h>
typedef struct {
int data[MAXSIZE]; // 假设 MAXSIZE 足够大
int length;
} SqList;
void MergeDescending(SqList *La, SqList Lb) {
int i = La->length - 1; // La 的最后一个元素下标
int j = Lb.length - 1; // Lb 的最后一个元素下标
int k = La->length + Lb.length - 1; // 合并后的最后一个位置下标
// 从后向前比较并填充
while (i >= 0 && j >= 0) {
if (La->data[i] > Lb.data[j]) {
La->data[k--] = La->data[i--]; // 取 La 的较大值
} else {
La->data[k--] = Lb.data[j--]; // 取 Lb 的较大值
}
}
// 处理剩余元素(若 Lb 有剩余)
while (j >= 0) {
La->data[k--] = Lb.data[j--];
}
// 更新 La 的长度
La->length += Lb.length;
}

为什么上述代码里最终合并的是递减有序的顺序表