数据结构合并C语言代码
时间: 2024-10-10 11:03:25 浏览: 11
数据结构的合并通常涉及不同数据结构的操作,比如合并两个数组、链表、堆栈等。这里以合并两个已排序整数数组为例,提供一种C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 自定义函数来合并两个升序数组
void merge_sorted_arrays(int* arr1, int* arr2, int len1, 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[] = {1, 3, 5, 7};
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {2, 4, 6, 8};
int len2 = sizeof(arr2) / sizeof(arr2[0]);
int total_len = len1 + len2;
int* combined = malloc(total_len * sizeof(int));
merge_sorted_arrays(arr1, arr2, len1, len2, combined);
printf("Combined sorted array: ");
for (int i = 0; i < total_len; i++) {
printf("%d ", combined[i]);
}
free(combined); // 避免内存泄漏
return 0;
}
```
在这个例子中,我们创建了一个新的数组`combined`来存放合并后的结果,并遍历两个输入数组,每次比较并将较小的元素添加到新数组。
阅读全文