在C语言中,删除数组中的重复项通常涉及到以下几个步骤:
malloc
和realloc
进行动态分配。以下是一个简单的示例,展示如何在C语言中删除一个整数数组中的重复项:
#include <stdio.h>
#include <stdlib.h>
// 函数用于比较两个整数是否相等
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
// 函数用于删除数组中的重复项
int removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1)
return n;
// 对数组进行排序
qsort(arr, n, sizeof(int), compare);
// 使用两个指针i和j
int j = 0;
for (int i = 0; i < n - 1; i++) {
if (arr[i] != arr[i + 1]) {
arr[j++] = arr[i];
}
}
arr[j++] = arr[n - 1];
return j;
}
int main() {
int arr[] = {1, 2, 2, 3, 4, 4, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
n = removeDuplicates(arr, n);
printf("去重后的数组: \n");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
return 0;
}
qsort
函数对数组进行排序。i
和j
,其中i
遍历整个数组,j
用于记录不重复元素的位置。arr[i]
不等于arr[i+1]
,则将arr[i]
复制到arr[j]
,并递增j
。j
。通过这种方法,可以有效地从C数组中删除重复项,并且可以根据具体需求进行适当的优化。
领取专属 10元无门槛券
手把手带您无忧上云