程序填空题:创建哈希表
输入不大于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
```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
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
cin >> n;
if(n>m) return 0;
for(j=1;j<=n;j++){
cin >> key;
CreateHash(HT,key);
}
for(i=0;i
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