用c语言请写出在一个无序顺序表中删除所有值重复的元素,使该顺序表中所有元素的值均不同且删除后的元素间相对位置保持不变的代码
时间: 2024-10-21 08:17:08 浏览: 28
python无序链表删除重复项的方法
在C语言中,我们可以使用两个指针`prev`和`current`来遍历顺序表,并利用额外的存储空间或原地操作来删除重复元素。这里是一个简单的原地算法示例,假设我们有一个整数顺序表`arr[]`:
```c
#include <stdio.h>
#define MAX_SIZE 100
void removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1)
return; // 如果数组只有一个元素或为空,无需处理
int i = 0;
for (int j = 1; j < n; j++) { // 从第二个元素开始比较
if (arr[j] != arr[i]) { // 如果当前元素与已记录的元素不同
i++; // 移动已记录元素的位置到下一个
arr[i] = arr[j]; // 将当前元素复制到空位
}
}
arr[i+1] = 0; // 结束循环后,最后一个元素可能未覆盖,设置为0表示结束
n = i + 1; // 更新实际元素的数量
}
// 示例用途
int main() {
int arr[MAX_SIZE];
// 填充你的顺序表...
printf("原始数组: ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
removeDuplicates(arr, n);
printf("\n去重后数组(不含重复): ");
for (int i = 0; i < n; i++)
printf("%d ", arr[i]);
阅读全文