用c++编写int delelem(int a[],int n)函数,对数组a中n个数据删除重复数据,只保留一个。对只出现一次的数据则全部保留。函数返回数组中剩余元素的个数。不使用容器
时间: 2024-10-23 16:15:00 浏览: 19
```cpp
#include <iostream>
int delelem(int arr[], int n) {
if (n == 0 || !arr) return 0; // 如果数组为空或者长度为0,直接返回
for (int i = 0, unique_count = 0; i < n - 1; ++i) { // 遍历数组
bool is_unique = true;
for (int j = i + 1; j < n; ++j) { // 检查元素是否重复
if (arr[i] == arr[j]) {
is_unique = false;
break;
}
}
if (is_unique) ++unique_count; // 如果元素唯一,则计数器加一
// 如果元素不是唯一,将后续元素向左移动一位
if (!is_unique) {
std::swap(arr[i], arr[unique_count]); // 交换到已知唯一的位置
}
}
return unique_count; // 返回去重后的元素个数
}
int main() {
int data[] = {1, 2, 2, 3, 4, 4, 5};
int n = sizeof(data) / sizeof(data[0]);
int unique_elements = delelem(data, n);
std::cout << "去重后数组的长度: " << unique_elements << "\n";
return 0;
}
```
这个`delelem`函数通过两个嵌套循环遍历数组,外层循环用于迭代元素,内层循环检查当前元素是否与其他元素重复。如果找到重复,它会将非重复元素移到已排序的有序部分。最后返回去重后的元素个数。
阅读全文