c++用指针去除重复元素
时间: 2023-08-04 07:15:50 浏览: 45
可以使用指针和动态内存分配来去除重复元素,具体操作如下:
1. 申请一个新的数组,大小与原数组相同;
2. 使用两个指针,一个指向原数组的第一个元素,另一个指向新数组的第一个元素;
3. 遍历原数组,对于每个元素,检查它是否在新数组中已经出现过;
4. 如果没有出现过,将它添加到新数组中,并将指向新数组的指针向后移动一位;
5. 如果出现过,跳过这个元素,不将它添加到新数组中;
6. 遍历完原数组后,释放原数组的内存,将新数组的指针返回。
下面是一个示例代码:
```c++
#include <iostream>
using namespace std;
int* removeDuplicates(int arr[], int n) {
int* newArr = new int[n];
int* p = arr;
int* q = newArr;
for (int i = 0; i < n; i++) {
bool isDuplicate = false;
for (int j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
*q++ = *p;
}
p++;
}
delete[] arr;
return newArr;
}
int main() {
int arr[] = {1, 2, 3, 2, 4, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int* newArr = removeDuplicates(arr, n);
for (int i = 0; i < n; i++) {
cout << newArr[i] << " ";
}
delete[] newArr;
return 0;
}
```
该代码中的 `removeDuplicates` 函数接受一个整数数组和数组大小,并返回一个新的数组,其中重复元素已经被去除。运行结果为:
```
1 2 3 4 5 1 5
```