设计一个程序,生成两个按值非递减有序排列的线性表LA和LB,再将LA和LB归并为一个新的线性表LC,且LC中的数据仍按值非递减有序排列,输出线性表LA、LB、LC。用C++语言表示
时间: 2023-11-10 09:06:14 浏览: 152
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
void initList(int *list, int size) {
for (int i = 0; i < size; i++) {
list[i] = rand() % 100; // 随机生成 0~99 之间的整数
}
// 对生成的数组进行排序
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (list[i] > list[j]) {
int temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
}
void printList(int *list, int size) {
for (int i = 0; i < size; i++) {
printf("%d ", list[i]);
}
printf("\n");
}
void merge(int *list1, int size1, int *list2, int size2, int *result, int *size) {
int i = 0, j = 0, k = 0; // i、j、k 分别表示 LA、LB、LC 的下标
while (i < size1 && j < size2) {
if (list1[i] <= list2[j]) {
result[k++] = list1[i++];
} else {
result[k++] = list2[j++];
}
}
while (i < size1) {
result[k++] = list1[i++];
}
while (j < size2) {
result[k++] = list2[j++];
}
*size = k;
}
int main() {
int LA[MAX_SIZE], LB[MAX_SIZE], LC[MAX_SIZE * 2];
int size1 = 10, size2 = 8, size3;
initList(LA, size1);
initList(LB, size2);
printf("LA: ");
printList(LA, size1);
printf("LB: ");
printList(LB, size2);
merge(LA, size1, LB, size2, LC, &size3);
printf("LC: ");
printList(LC, size3);
return 0;
}
```
阅读全文
相关推荐


















