线性探测解决冲突----求哈希地址

问题描述】
由于散列中存在冲突问题,所以有些关键码的存储地址并不是和散列函数计算的一样,后来提出很多解决方法解决冲突,其中线性探测法就是一种。所谓线性探测法就是当发生冲突时,从冲突位置的下一个位置起,依次寻找空的散列地址。这种情况下如果想要查找某个关键字,就要不断探测,最终才可以找到关键码的存储位置,如今需要统计这个过程中的关键码对比次数。
已知关键码集合(关键码均大于零),散列表表长为maxS,散列函数为H(key)= key %divi,用线性探测法处理冲突。
【输入形式】第一行两个整数,第一个表示散列表表长maxS,第二个表示除数divi;第二行关键码的个数;第三行关键码集合,数据元素之间用空格隔开;第四行表示要查找的关键码key。
【输出形式】待查找值的哈希地址。如果待查找值不存在,则输出-1。
【样例输入】
11 11
9
47 7 29 11 16 92 22 8 3
3
【样例输出】6

分析:
1 .创建一个哈希数组
2 .写一个存入哈希的函数 把输入的数据存入哈希数组里
3 .在哈希数组中查询 输出结果

实现

创建存入哈希数组的函数

void Insert (int maxS,int divi,int k,int ht[])
{
   //maxS 数组长度 divi 除数 k 要存入的数 ht[] 哈希数组
    int j;
    j=k%divi;
    if(ht[j]==0)//为 0 说明 没有存放数据
        ht
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值