C语言去除数组里重复的数
时间: 2024-10-13 10:05:52 浏览: 55
在C语言中,去除数组里的重复元素可以采用一些常见的数据结构,比如哈希表(通常使用`#include <stdlib.h>`里的`malloc`和`free`),或者使用排序算法配合额外的空间。这里提供一种简单的示例,利用额外数组存储非重复元素:
```c
#include <stdio.h>
#include <string.h>
// 函数声明
void removeDuplicates(int arr[], int n);
int main() {
int input[] = {1, 5, 2, 6, 2, 8, 5};
int uniqueSize;
// 原始数组大小
int originalN = sizeof(input) / sizeof(input[0]);
printf("Original array: ");
for (int i = 0; i < originalN; i++) {
printf("%d ", input[i]);
}
uniqueSize = removeDuplicates(input, originalN);
printf("\nArray with duplicates removed: ");
for (int i = 0; i < uniqueSize; i++) {
printf("%d ", input[i]);
}
return 0;
}
// 去除重复函数
void removeDuplicates(int arr[], int n) {
if (n <= 1) return;
int uniqueArr[n];
int j = 0;
for (int i = 0; i < n - 1; i++) {
if (arr[i] != arr[i + 1]) {
uniqueArr[j++] = arr[i];
}
}
uniqueArr[j] = arr[n - 1]; // 将最后一个元素复制到新数组
j++; // 更新uniqueArr的实际长度
// 将原数组替换为去重后的数组
for (int i = 0; i < j; i++) {
arr[i] = uniqueArr[i];
}
}
```
这个程序首先会遍历输入数组,如果遇到的新元素与前面的不同,则将其添加到`uniqueArr`中。注意,这种方法不会改变原始数组的顺序。
阅读全文