去除数组中的重复数据c语言
时间: 2024-11-21 09:29:51 浏览: 2
c语言编程题之数组操作删除排序数组中的重复项.zip
在C语言中去除数组中的重复数据,可以采用几种策略。一种常见的方法是使用哈希表(如`unordered_set`或`stdboolen`数组),但C标准库本身并不直接提供这样的数据结构。这里我们可以手动创建一个辅助结构,例如使用一个临时数组或通过遍历原数组来进行操作。以下是基于基本循环的一个简单示例:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_duplicate(int arr[], int size, int value) {
for (int i = 0; i < size; i++) {
if (arr[i] == value)
return true;
}
return false;
}
void remove_duplicates(int arr[], int* size, int n) {
int unique[n];
int j = 0;
for (int i = 0; i < n; i++) {
if (!is_duplicate(unique, j, arr[i])) {
unique[j++] = arr[i];
}
}
*size = j;
}
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int new_size;
remove_duplicates(arr, &new_size, n);
printf("Original array: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
printf("\nArray with duplicates removed: ");
for (int i = 0; i < new_size; i++)
printf("%d ", unique[i]);
return 0;
}
```
在这个例子中,`remove_duplicates`函数会检查`unique`数组是否已经包含当前元素,如果没有,则添加到新数组中。`main`函数展示了如何调用这个函数并打印结果。
阅读全文