两个线性表合并算法的实现。已知顺序表LA和LB中的数据元素按值非递减有序排列,现要将LA和LB归并为一个新的顺序表LC,且LC中的数据元素仍按值非递减有序排序。例如:LA=(3,5,8,11) LB=(2,6,9,15,20)。
时间: 2023-05-12 20:04:00 浏览: 77
两个非递减存储顺序线性表归并为非递减顺序线性表
可以使用双指针法来实现两个线性表的合并。具体步骤如下:
1. 定义三个指针,分别指向LA、LB、LC的起始位置。
2. 比较LA和LB当前位置的元素大小,将较小的元素插入到LC中,并将指向该元素的指针向后移动一位。
3. 重复步骤2,直到LA或LB中的元素全部插入到LC中。
4. 如果LA或LB中还有剩余元素,将剩余元素直接插入到LC中。
5. 返回LC。
以下是示例代码:
```
void merge(int LA[], int LB[], int LC[], int lenA, int lenB) {
int i = 0, j = 0, k = 0;
while (i < lenA && j < lenB) {
if (LA[i] <= LB[j]) {
LC[k++] = LA[i++];
} else {
LC[k++] = LB[j++];
}
}
while (i < lenA) {
LC[k++] = LA[i++];
}
while (j < lenB) {
LC[k++] = LB[j++];
}
}
```
其中,LA、LB、LC分别为顺序表的数组,lenA、lenB分别为LA、LB的长度。
阅读全文