C++ 将两个有序线性合成表合成为一个
时间: 2024-05-11 16:17:22 浏览: 159
可以采用归并排序的思想,将两个有序线性表合并成一个有序线性表。具体步骤如下:
1. 定义一个新的线性表,作为合并后的有序线性表;
2. 分别从两个有序线性表的第一个元素开始比较,将较小的元素插入到新的线性表中;
3. 然后将较小元素所在的线性表的指针后移一位,继续比较两个线性表的下一个元素,直到其中一个线性表的元素全部插入到新的线性表中;
4. 最后将另一个有剩余元素的线性表中的所有元素插入到新的线性表中。
代码实现示例(假设线性表为顺序存储结构):
```c
void mergeList(SeqList La, SeqList Lb, SeqList *Lc) {
int i = 0, j = 0, k = 0;
while (i < La.length && j < Lb.length) {
if (La.data[i] <= Lb.data[j]) {
Lc->data[k++] = La.data[i++];
} else {
Lc->data[k++] = Lb.data[j++];
}
}
while (i < La.length) {
Lc->data[k++] = La.data[i++];
}
while (j < Lb.length) {
Lc->data[k++] = Lb.data[j++];
}
Lc->length = k;
}
```
其中,La、Lb分别为待合并的两个有序线性表,Lc为合并后的有序线性表。
阅读全文