c语言去重复带指针高效
时间: 2023-08-08 19:05:59 浏览: 54
要在C语言中高效地去除数组中的重复元素,可以使用指针来实现。以下是一个示例代码:
```c
#include <stdio.h>
void removeDuplicates(int *arr, int *size) {
int i, j, k;
for(i = 0; i < *size; i++) {
for(j = i + 1; j < *size; j++) {
if(arr[i] == arr[j]) {
// 将重复元素后面的元素往前移动
for(k = j; k < *size - 1; k++) {
arr[k] = arr[k + 1];
}
(*size)--; // 数组大小减一
j--; // 因为元素往前移动了,所以需要将内层循环的索引减一
}
}
}
}
int main() {
int arr[] = {1, 2, 3, 4, 2, 3, 5, 6, 1};
int size = sizeof(arr) / sizeof(arr[0]);
printf("原始数组:");
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
removeDuplicates(arr, &size);
printf("\n去重后的数组:");
for(int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
在上面的代码中,我们修改了 `removeDuplicates` 函数的参数,将数组大小传递给函数的指针。这样,我们可以在函数中直接修改数组大小,而不需要返回数组大小。
同时,我们在调用 `removeDuplicates` 函数时,使用了 `&size` 来传递数组大小的地址。
这样,就可以在C语言中高效地去除数组中的重复元素了。希望对你有所帮助!如有任何疑问,请随时提问。