用c语言写一个程序:有若干串长度为n的整数,现要求使用数据结构算法编写程序,若这串数中存在值相同的数, 则只保留一个,最终按照原来的顺序将这串数输出
时间: 2023-02-14 17:29:23 浏览: 87
我可以给您提供一个示例程序,该程序使用哈希表来实现上述功能:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 10000
int n;
int a[MAX_N];
int hash[MAX_N]; // 哈希表,用于判重
int main() {
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < n; i++) {
if (hash[a[i]] == 0) { // 若该数没有出现过
printf("%d ", a[i]); // 输出该数
hash[a[i]] = 1; // 标记该数已出现过
}
}
return 0;
}
```
上面的程序会读入一个整数n,然后读入n个整数并存入数组a中。接着,程序使用哈希表来记录每个数字是否出现过,遍历数组a,如果某个数字没有出现过,就将其输出。
请注意,上面程序中的哈希表hash只能处理范围内的整数,若需要处理更大范围的整数,需要使用更高效的哈希函数或其它数据结构。
阅读全文