从有序顺序表中删除其所有输入数字的重复项。要求C语言
时间: 2024-10-16 16:21:23 浏览: 25
南京大学-计算机基础-大专-第二次作业2.docx
在C语言中,从有序顺序表(通常是一个数组或者动态数组)中删除重复元素可以采用双指针法或者利用额外的空间来实现。这里我们提供一种简单的线性时间复杂度O(n)的方法:
```c
#include <stdio.h>
void removeDuplicates(int arr[], int n) {
if (n == 0 || n == 1) return; // 如果只有一个元素或为空,无需操作
int i = 0; // 当前遍历位置
for (int j = 1; j < n; j++) { // 遍历整个数组
if (arr[i] != arr[j]) { // 如果当前元素不等于已存储的元素
i++; // 将非重复元素移到新位置
arr[i] = arr[j]; // 更新新位置的值
}
}
arr[i+1] = '\0'; // 结束符,表示数组的新长度
printf("删除重复后的数组: ");
for (int k = 0; k <= i; k++)
printf("%d ", arr[k]);
printf("\n");
}
// 示例:
int main() {
int input[] = {1, 2, 3, 4, 4, 5, 6, 7, 7, 8, 9};
int n = sizeof(input) / sizeof(input[0]);
removeDuplicates(input, n);
return 0;
}
```
这个程序会将数组`input`中的重复项删除并打印出新的、无重复的数组。
阅读全文