1739: 查找-哈希表
金币值:2
定数:11
时间限制:1.000 s
内存限制:128 M
正确:3
提交:5
正确率:60.00% 命题人:
题目描述
本题哈希表的构造采用除留余数法,处理冲突的方法采用线性探测法。
#include <stdio.h>
#define NULLKEY 0
#define HASHSIZE 20
typedef struct data{
int key;
} HashTable[HASHSIZE];
void InsertHash(HashTable &H,int key);
int SearchHash(HashTable H,int key);
void InitHashTable(HashTable &H) {
int i;
for(i=0; i<HASHSIZE; i++)
H[i].key=NULLKEY;
}
/*散列函数*/
int Hash(int key) {
return key % 19; /* 除留余数法 */
}
int main(void){
HashTable H;
int n,i,key,result;
InitHashTable(H);
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%d",&key);
InsertHash(H,key);
}
scanf("%d",&key);
result=SearchHash(H,key);
if (result==-1)
printf("%d:fail",key);
else
printf("%d:%d",key,result);
return 0;
}
/*仅提交以下代码*/
void InsertHash(HashTable &H,int key) {
}
int SearchHash(HashTable H,int key) {//查找成功返回对应下标,否则返回-1
} 输入格式
第1行输入一个整数n,表示待插入到散列表中的整数个数。
第2行输入n个正整数。
第3行输入一个待查找的整数
第2行输入n个正整数。
第3行输入一个待查找的整数
输出格式
共1行,显示在散列表中查找关键字的结果,若查找成功,输出该关键字及其所在的下标,否则显示fail。
输入样例 复制
12
12 67 56 16 25 37 22 29 15 47 48 34
37
输出样例 复制
37:19