用c语言数据结构的方式写一个程序:对于两个无序的顺序表,合并它们并且按从小到大的顺序排序
时间: 2023-02-08 19:25:14 浏览: 129
```c
#include <stdio.h>
#define MAX_SIZE 100
int list1[MAX_SIZE], list2[MAX_SIZE];
int size1, size2;
void mergeAndSort() {
int i = 0, j = 0, k = 0;
int mergedList[MAX_SIZE];
while (i < size1 && j < size2) {
if (list1[i] < list2[j]) {
mergedList[k++] = list1[i++];
} else {
mergedList[k++] = list2[j++];
}
}
while (i < size1) {
mergedList[k++] = list1[i++];
}
while (j < size2) {
mergedList[k++] = list2[j++];
}
// 更新顺序表1和顺序表2
size1 = size2 = k;
for (i = 0; i < k; i++) {
list1[i] = mergedList[i];
}
for (i = 0; i < k; i++) {
list2[i] = mergedList[i];
}
}
int main() {
// 输入顺序表1和顺序表2
scanf("%d", &size1);
for (int i = 0; i < size1; i++) {
scanf("%d", &list1[i]);
}
scanf("%d", &size2);
for (int i = 0; i < size2; i++) {
scanf("%d", &list2[i]);
}
mergeAndSort();
// 输出合并和排序后的顺序表
for (int i = 0; i < size1; i++) {
printf("%d ", list1[i]);
}
printf("\n");
for (int i = 0; i < size2; i++) {
printf("%d ", list2[i]);
}
return 0;
}
```
这是一个 C 程序,用了两个无序的顺序表,将它们合并并按从小到大的顺序排序。
它使用了归并排序中的合并步骤来合并两个顺序表,并使用了两个指针来遍历两个顺序表,比较它们的元素,将较小的元素插入到新顺序表中。
最后,合并
阅读全文