C语言合并两个数组并去重怎么实现

avatar
作者
筋斗云
阅读量:2

实现合并两个数组并去重的方法有很多种,以下是一种常用的方法:

  1. 声明一个新的数组,用于存放合并后的结果。
  2. 先将第一个数组中的元素逐个复制到新的数组中。
  3. 遍历第二个数组,判断每个元素是否在新的数组中已存在,若不存在则将其复制到新的数组中。
  4. 最后得到的新数组即为合并后去重的结果。

以下是一个示例代码:

#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 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!