如何用C语言编写一个函数来从数组中删除重复的元素并保持顺序不变?
时间: 2024-11-22 12:45:13 浏览: 26
在C语言中,由于没有内置的数据结构来支持复杂的操作,如直接查找和删除重复元素,我们通常需要自定义解决方案。这里提供一种简单的基于循环遍历的方式,它使用临时数组存储不重复的元素:
```c
#include <stdio.h>
void removeDuplicates(int arr[], int n) {
// 创建一个新的数组,其大小等于原数组的一半
int uniqueArr[0], i = 0;
for (int j = 0; j < n; j++) {
// 如果当前元素是第一次遇到,则添加到uniqueArr
if (uniqueArr[i] == 0 || arr[j] != uniqueArr[i]) {
uniqueArr[i++] = arr[j];
}
}
// 转换结果回原数组(假设原数组足够大)
if (i < sizeof(uniqueArr) / sizeof(uniqueArr[0])) {
for (int k = 0; k < i; k++) {
arr[k] = uniqueArr[k];
}
} else {
printf("Not enough space in the original array.\n");
}
}
// 测试函数
int main() {
int input[] = {1, 2, 3, 4, 4, 5, 6, 7, 7};
int n = sizeof(input) / sizeof(input[0]);
printf("Original array:\n");
for (int i = 0; i < n; i++) {
printf("%d ", input[i]);
}
removeDuplicates(input, n);
printf("\nArray after removing duplicates:\n");
for (int i = 0; i < n; i++) {
printf("%d ", input[i]);
}
return 0;
}
```
这个程序首先创建了一个只有一半长度的新数组,然后遍历原数组,如果新数组中还没有该元素或元素不同,就将它添加进去。最后,将新数组的内容复制回原数组。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231045053.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.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)