两个线性表合并算法的实现。已知顺序表LA和LB中的数据元素按值非递减有序排列,现要将LA和LB归并为一个新的顺序表LC,且LC中的数据元素仍按值非递减有序排序。 请写出该要求的源代码
时间: 2023-05-26 10:05:26 浏览: 239
```
void MergeList(SqList LA, SqList LB, SqList &LC) {
int i = 1, j = 1, k = 0;
int lenA = LA.length, lenB = LB.length;
LC.elem = (ElemType*) malloc ((lenA + lenB) * sizeof(ElemType)); // 动态分配LC的存储空间
if (!LC.elem) exit(OVERFLOW); // 如果存储空间分配失败,则退出程序
while (i <= lenA && j <= lenB) {
if (LA.elem[i] <= LB.elem[j]) {
LC.elem[++k] = LA.elem[i++];
} else {
LC.elem[++k] = LB.elem[j++];
}
}
while (i <= lenA) LC.elem[++k] = LA.elem[i++]; // 如果LA有剩余元素,则将剩余元素复制到LC
while (j <= lenB) LC.elem[++k] = LB.elem[j++]; // 如果LB有剩余元素,则将剩余元素复制到LC
LC.length = k;
}
```
注:此处假设SqList是一个结构体,其中包括了一个ElemType*类型的elem数组指针和一个int类型的length表示数组长度。
阅读全文