用c语言线性表算法编写出将两个顺序存储的有序表A:1,4,6,7,9和B:2,3,8,11合成一个有序表C:,1,2,3,4,5,6,7,8,9,11的算法。
时间: 2023-07-30 10:05:47 浏览: 112
以下是用 C 语言实现将两个有序表合并成一个有序表的算法:
```c
#include <stdio.h>
#define MAXSIZE 20
// 定义顺序表结构体
typedef struct {
int data[MAXSIZE];
int length;
} SqList;
// 合并两个有序表
void MergeList(SqList La, SqList Lb, SqList *Lc) {
int i = 0, j = 0, k = 0;
// 比较 La 和 Lb 的元素,将较小的元素放入 Lc 中
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++];
}
}
// 将剩余的元素插入到 Lc 中
while (i < La.length) {
Lc->data[k++] = La.data[i++];
}
while (j < Lb.length) {
Lc->data[k++] = Lb.data[j++];
}
// 统计 Lc 的长度
Lc->length = k;
}
int main() {
SqList La = {{1, 4, 6, 7, 9}, 5};
SqList Lb = {{2, 3, 8, 11}, 4};
SqList Lc;
MergeList(La, Lb, &Lc);
for (int i = 0; i < Lc.length; i++) {
printf("%d ", Lc.data[i]);
}
return 0;
}
```
运行结果:
```
1 2 3 4 6 7 8 9 11
```
这里我们使用了结构体来表示顺序表,并将合并后的有序表传入函数时使用指针来修改其值。
阅读全文