实现合并两个数组并去重的方法有很多种,以下是一种常用的方法:
以下是一个示例代码:
#include <stdio.h>
#define MAX_SIZE 100
void mergeAndRemoveDuplicates(int arr1[], int size1, int arr2[], int size2, int mergedArr[], int *mergedSize) {
int i, j, k;
// 复制第一个数组中的元素到新数组
for (i = 0; i < size1; i++) {
mergedArr[i] = arr1[i];
}
*mergedSize = size1; // 合并后的数组大小
// 遍历第二个数组
for (i = 0; i < size2; i++) {
int isDuplicate = 0;
// 判断当前元素是否已存在于新数组中
for (j = 0; j < *mergedSize; j++) {
if (arr2[i] == mergedArr[j]) {
isDuplicate = 1;
break;
}
}
// 若不存在则将其复制到新数组中
if (!isDuplicate) {
mergedArr[*mergedSize] = arr2[i];
(*mergedSize)++;
}
}
}
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int size1 = sizeof(arr1) / sizeof(arr1[0]);
int arr2[] = {4, 5, 6, 7, 8};
int size2 = sizeof(arr2) / sizeof(arr2[0]);
int mergedArr[MAX_SIZE];
int mergedSize;
mergeAndRemoveDuplicates(arr1, size1, arr2, size2, mergedArr, &mergedSize);
printf("合并并去重后的数组:");
for (int i = 0; i < mergedSize; i++) {
printf("%d ", mergedArr[i]);
}
printf("\n");
return 0;
}
运行结果:
合并并去重后的数组:1 2 3 4 5 6 7 8