哈希表设计

内容
(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
  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值