c语言删除数组中重复的元素
时间: 2023-10-14 21:04:57 浏览: 47
可以使用双重循环来实现去重,具体步骤如下:
1. 外层循环从第一个元素开始,到倒数第二个元素结束,因为最后一个元素不需要再和后面的元素比较。
2. 内层循环从外层循环的下一个元素开始,到最后一个元素结束。
3. 如果外层循环指向的元素和内层循环指向的元素相同,则将内层循环指向的元素删除,即将它后面的元素全部向前移动一位,同时数组长度减1。
4. 如果内层循环指向的元素被删除了,那么不需要将外层循环指向的元素和之后的元素再次比较,需要将内层循环指针回退一格。
5. 内层循环结束后,外层循环指针向后移动一格,继续进行比较。
下面是示例代码:
```c
#include <stdio.h>
void delete_duplicate(int arr[], int *len){
int i, j, k;
for (i = 0; i < *len - 1; i++) {
for (j = i + 1; j < *len; j++) {
if (arr[i] == arr[j]) {
for (k = j; k < *len - 1; k++) {
arr[k] = arr[k + 1];
}
(*len)--;
j--;
}
}
}
}
int main() {
int arr[] = {1, 2, 3, 2, 4, 3, 5};
int len = sizeof(arr) / sizeof(int);
int i;
printf("Original array: ");
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
delete_duplicate(arr, &len);
printf("\nArray after deleting duplicates: ");
for (i = 0; i < len; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
输出结果为:
```
Original array: 1 2 3 2 4 3 5
Array after deleting duplicates: 1 2 3 4 5
```
相关推荐
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)