C语言数据结构array数组去重
时间: 2024-09-24 17:14:18 浏览: 52
在C语言中,由于原生数组不支持直接的元素去重操作,我们需要手动遍历并创建一个新的数组来存储唯一值。这里有一个简单的示例,展示了如何通过遍历和插入新数组的方式来实现数组去重:
```c
#include <stdio.h>
#include <stdbool.h>
// 去重函数
void remove_duplicates(int arr[], int n, int unique[]) {
// 确保unique数组足够大来容纳所有唯一元素
if (n > sizeof(unique) / sizeof(unique[0])) {
printf("Error: Unique array is too small.\n");
return;
}
for (int i = 0; i < n; i++) {
bool is_duplicate = false;
for (int j = 0; j < i; j++) { // 避免重复比较自身
if (arr[i] == arr[j]) {
is_duplicate = true;
break;
}
}
if (!is_duplicate) {
unique[j] = arr[i]; // 如果不是重复,插入到unique数组中
j++; // 更新j的位置,因为找到了一个位置
}
}
}
int main() {
int source[] = {1, 2, 3, 4, 4, 5, 6, 6, 7};
int n = sizeof(source) / sizeof(source[0]);
int unique[n]; // 假设unique数组足够大
remove_duplicates(source, n, unique);
printf("Unique elements in the original array:\n");
for (int i = 0; i < n; i++) {
printf("%d ", unique[i]);
}
printf("\n");
return 0;
}
```
在这个例子中,`remove_duplicates` 函数会检查源数组中的每个元素是否已经在目标数组`unique`中,如果没有则添加。注意这只是一个基本的解决方案,并非最高效,如果需要处理大数据集,更高效的算法如哈希表(如`unordered_set`)可能会更适合。
阅读全文