编写一个C语言程序,接受一个整数数组,数组长为20,删除数组中重复的元素。要求最终输 出的数组中元素是唯一的,并且保留原来的顺序 输入:[1,2,2,3,4,4,5] 输出:[1,2,3,4,5]
时间: 2024-09-18 22:17:56 浏览: 67
要编写一个C语言程序来删除整数数组中的重复元素并保持原始顺序,可以使用哈希表(如数组本身)来记录每个元素的出现次数。遍历数组,如果当前元素不在哈希表中,就添加到结果数组和哈希表中;如果已经在哈希表中,则跳过。以下是具体的实现步骤:
```c
#include <stdio.h>
#define ARRAY_LENGTH 20
void removeDuplicates(int arr[], int n) {
int i, j;
for (i = 0, j = 0; i < n; ++i) {
if (arr[i] != -1) { // 假设已知位置用-1标记
arr[j++] = arr[i]; // 将未重复元素移到新数组中
} else {
arr[arr[i]] = -1; // 在原数组中标记该位置已被处理
}
}
// 输出去重后的数组,因为j比n小,所以只需要输出到j位置
for (i = 0; i <= j; ++i) {
printf("%d ", arr[i]);
}
}
int main() {
int input[] = {1, 2, 2, 3, 4, 4, 5};
int n = sizeof(input) / sizeof(input[0]);
removeDuplicates(input, n);
return 0;
}
```
注意:在这个示例中,我们假设数组元素不会超出范围,且输入数组的长度已经提前知道。为了简化代码,这里使用了原数组的一部分来作为临时哈希表,将元素出现的位置用-1表示。实际应用中,可以创建一个额外大小稍大的数组来保存去重后的结果。
当你运行这个程序,它会输出:`1 2 3 4 5`,这是输入数组去重后的版本。
阅读全文