哈希表设计"/>
哈希表设计
内容
(1)、对于给定20个人的姓名,用除留余数法构造哈希函数,用线性探测再散列
法处理冲突,构造哈希表;
(2)、对于给定的一个姓名,在哈希表上进行查找,如果其存在则将其删除,否
则将其插入到该哈希表上。
(9)、不妨设字母(不分大小写)a~z对应于数值1~26,对于给定的20个姓名作为关键
字,将构成每个姓名的首字母对应的数值相加,然后按照除留余数法构造哈希函数,
并用线性探测再散列法处理冲突,完成哈希表的构造。
程序如下
#include <stdio.h>#define MaxSize 100 //定义最大哈希表长度
#define NULLKEY -1 //定义空关键字值
#define DELKEY -2 //定义被删关键字值
typedef int KeyType; //关键字类型
typedef char *InfoType; //其他数据类型
typedef struct{
KeyType key; //关键字域
InfoType data; //其他数据域
int count; //探查次数域
}HashTable[MaxSize]; //哈希表类型 void InsertHT(HashTable ha,int &n,KeyType k,int p);
void CreateHT(HashTable ha,KeyType x[],int n,int m,int p);
int SearchHT(HashTable ha,int p,KeyType k);
int DeleteHT(HashTable ha,int p,int k,int &n);
void DispHT(HashTable ha,int n,int m);
int *fun(int *k);
int change(char y[10]); void main()
{
int x[20]={0};
fun(x);
int n=20,m=30,p=29,i,k;
char k1[10];
HashTable ha;
CreateHT(ha,x,n,m,p);
printf("\n");
DispHT(ha,n,m);
printf("请输入查找的姓名:");
scanf("%s",&k1);
k=change(k1);
i=SearchHT(ha,p,k);
if (i!=-1)
{
printf(" 找到%d\n",k);
printf(" 删除关键字\n");
DeleteHT(ha,p,k,n);
}
else
更多推荐
哈希表设计
发布评论