SHAOXIAOJ正在加载中...

1739: 查找-哈希表

金币值:2 定数:11 时间限制:1.000 s 内存限制:128 M
正确:1 提交:1 正确率:100.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 数据结构-查找

题目描述

本题哈希表的构造采用除留余数法,处理冲突的方法采用线性探测法。
#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行输入一个待查找的整数

输出格式

共1行,显示在散列表中查找关键字的结果,若查找成功,输出该关键字及其所在的下标,否则显示fail。

输入样例    复制

12
12 67 56 16 25 37 22 29 15 47 48 34
37

输出样例    复制

37:19