用c语言实现两个有序顺序表的合并
时间: 2023-09-08 18:11:28 浏览: 280
c++ 如何合并两个有序链表
5星 · 资源好评率100%
好的,我可以为您提供一个基于C语言的有序顺序表合并的示例代码。请注意,以下代码仅用于参考,请根据自己的需求进行修改和适配。
```
#include <stdio.h>
#define MAX_SIZE 100
void merge(int arr1[], int len1, int arr2[], int len2, int result[]) {
int i = 0, j = 0, k = 0;
while(i < len1 && j < len2) {
if(arr1[i] <= arr2[j]) {
result[k++] = arr1[i++];
} else {
result[k++] = arr2[j++];
}
}
while(i < len1) {
result[k++] = arr1[i++];
}
while(j < len2) {
result[k++] = arr2[j++];
}
}
int main() {
int arr1[MAX_SIZE];
int arr2[MAX_SIZE];
int len1, len2;
printf("Please input the length of the first array:\n");
scanf("%d", &len1);
printf("Please input the elements of the first array:\n");
for(int i = 0; i < len1; i++) {
scanf("%d", &arr1[i]);
}
printf("Please input the length of the second array:\n");
scanf("%d", &len2);
printf("Please input the elements of the second array:\n");
for(int i = 0; i < len2; i++) {
scanf("%d", &arr2[i]);
}
int result[MAX_SIZE];
merge(arr1, len1, arr2, len2, result);
printf("The merged array is:\n");
for(int i = 0; i < len1 + len2; i++){
printf("%d ", result[i]);
}
return 0;
}
```
在这个代码中,我们首先定义了一个 `merge()` 函数,该函数接受两个有序顺序表 `arr1` 和 `arr2` ,以及这两个表的长度 `len1` 和 `len2`。然后,它将两个表按照升序合并到一个数组 `result` 中,并按照升序排列。最后,主函数调用 `merge()` 函数,在控制台打印出合并后的数组。
需要注意的是,在输入两个数组的元素时,我们只接受整数类型的输入。如果您的需求不同,则需要相应修改读取元素的代码块。
希望这段代码可以对您有所帮助!
阅读全文