写一个c函数,删除顺序表中重复元素,使得顺序表中不同元素有且仅有一个,比如i指向第一个,j让它指向第二个,然后循环遍历,设置重复次数,有一次重复前移a[j-k]=a[j],然后外层也设置一个循环循环
时间: 2024-09-26 14:03:51 浏览: 33
在C语言中,你可以创建一个名为`removeDuplicates`的函数,它接受一个整型数组`arr`、数组长度`size`以及两个指针`first`(指向第一个元素)和`last`(指向最后一个非重复元素)。这个函数将遍历数组并删除重复元素,保留每个元素出现一次。
```c
#include <stdio.h>
void removeDuplicates(int arr[], int size, int* first, int* last) {
if (*first == *last) { // 如果只有一个元素或为空,直接返回
return;
}
int i = *first + 1; // 指向第二个元素
while (i < size) {
if (arr[i] != arr[*first]) { // 找到不同元素
arr[i] = arr[*first]; // 把不同元素移到前面
(*first)++;
} else {
i++; // 遇到重复,跳过
}
}
*last = *first - 1; // 更新last指针的位置,使其指向最后一个非重复元素
}
// 示例用法
int main() {
int arr[] = {1, 2, 3, 3, 4, 5, 5, 6};
int size = sizeof(arr) / sizeof(arr[0]);
int first = 0, last = 0;
removeDuplicates(arr, size, &first, &last);
printf("Non-duplicate elements are: ");
for (int i = first; i <= last; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
阅读全文