-->
当前位置:首页 > 题库 > 正文内容

程序填空题:创建哈希表

Luz4年前 (2021-05-10)题库3009
输入不大于m的n个不为0(0表示空值)的数,用线性探查法解决冲突构造散列表。

```c++
#include
using namespace std;

#define m 16
#define NULLKEY 0

struct HashTable{
int key;
};

void CreateHash(HashTable HT[],int key){
int H0=key%13;
int Hi;
if (@@[HT[H0].key==NULLKEY](2)) {
HT[H0].key=key;
return;
}
else{
for(int i=1;i @@[Hi=(H0+i)%m](2);
if (@@[HT[Hi].key==NULLKEY](2)) {
HT[Hi].key=key;
return;
}
}
}
}

int main()
{ int key;
int result;
int i,j,n;
HashTable HT[m];
for(i=0;i HT[i].key=0;
cin >> n;
if(n>m) return 0;
for(j=1;j<=n;j++){
cin >> key;
CreateHash(HT,key);
}
for(i=0;i cout << HT[i].key << " ";
return 0;
}

```
### 输入样例:
第一行输入一个数n,第二行输入n个数。
```in
12
19 14 23 1 68 20 84 27 55 11 10 79
```

### 输出样例:
输出散列表中的值。0表示空值。
```out
0 14 1 68 27 55 19 20 84 79 23 11 10 0 0 0
```





答案:
第1空:HT[H0].key==NULLKEY

第2空:Hi=(H0+i)%m

第3空:HT[Hi].key==NULLKEY

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。