一. 题目
哈希查找
概述:
哈希表的查找过程与构造哈希表的过程基本一致,即给定关键字key值并根据构造哈希表时设定的哈希函数求得其存储地址。若哈希表的此存储地址中没有记录,则查找失败;否则将该地址中的关键字值与key进行比较,若相等则査找成功;否则根据构造哈希表时设定的解决冲突方法寻找下一个哈希地址,知道查找成功或查找到哈希地址中无记录(既查找失败)为止。
我们约定,对哈希表Hash中未存放记录的数组元素 Hash[i],其标志是Hash[i]值为-1并且,对冲突的处理采用线性探测法; Hash[i]值为-2表示存放于 Hash[i]的关键字值已被删除,但查找到该项时不应终止查找。下面以长度为11的闭散列(哈希)表为例给出在哈希表上的插入、查找和删除算法。初始时哈希表中的关键字值全部置为-1,表示该哈希表为空。
二. 任务
- 了解哈希函数和哈希表的有关概念
- 掌握哈希表的建立与查找方法
三. 实验内容
用除留余数法建立一个哈希表,然后在哈希表中实现查找和删除功能。
四.程序
#include "stdafx.h"
#include<stdio.h>
#define MAXSIZE 11
#define key 11
void Hash_Insert(int Hash[],int x)
{
int i=0,t;
t=x%key;
while(i<MAXSIZE)
{
if(Hash[t]<=-1)
{
Hash[t]=x;
break;
}
else
t=(t+1)%key;
i++;
}
if(i==MAXSIZE)
printf("Hashlist is full!\n");
}
void