用C语言剔除两个数组中的相同元素
时间: 2024-10-13 20:12:00 浏览: 0
在C语言中,如果你想剔除两个数组中的相同元素,可以采用几种策略。这里提供一种简单的方法,即使用哈希表(如`std::unordered_set`)来记录已经遇到过的元素,然后遍历第一个数组,如果元素不在哈希表中,则添加到第二个数组,并将该元素加入哈希表。以下是基本的步骤:
```c
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <unordered_set>
void removeDuplicates(int arr1[], int size1, int arr2[], int& size2) {
std::unordered_set<int> hashTable;
for (int i = 0; i < size1; ++i) {
if (hashTable.find(arr1[i]) == hashTable.end()) {
arr2[size2++] = arr1[i];
hashTable.insert(arr1[i]);
}
}
}
// 测试函数
int main() {
int arr1[] = {1, 2, 3, 4, 5};
int arr2[10]; // 预留空间
int size1 = sizeof(arr1) / sizeof(arr1[0]);
int size2 = 0;
removeDuplicates(arr1, size1, arr2, size2);
printf("After removing duplicates from array 1 to array 2:\n");
for (int i = 0; i < size2; ++i) {
printf("%d ", arr2[i]);
}
return 0;
}
```
在这个例子中,`removeDuplicates` 函数接收两个数组和它们的大小,它会更新第二个数组 `arr2` 并返回新的数组长度 `size2`。注意,这种方法不会改变第一个数组 `arr1` 的内容。