返回信息流知道哈希表在进行插入发生冲突时,可以 通过 线性探测等方法,找到一个位置进行插入.
想知道,这些发生冲突的hash值, 在进行查询时怎么处理呢?
怎么知道到底应该返回哪个呢?
如
int hast_table[10];
int hash(int key)
{
return key % 7;
}
则插入3时,选取位置3; 插入 10时,选取位置3,线性探测放入位置4中,
那么查询 3, 10时,都会选到 位置3,这是怎么处理呢?
谢谢大家
这是一条镜像帖。来源:北邮人论坛 / cpp / #82911同步于 2014/9/29
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[问题]哈希表查询
duoniK
2014/9/29镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
在查询的时候是这样的 比方说你查询10 先用hash()运算得到hashcode是3那么从3开始找起 按照线性探测 直到找到10或者找到空值为止 ,根据你的表 在找到4号位置时就找到10了 ;再比如找17 找到5号位置为空 说明没有找到
【 在 duoniK 的大作中提到: 】
知道哈希表在进行插入发生冲突时,可以 通过 线性探测等...
是不是发现非空或未到边界,就应该向下线性探测? 那么查10的时候先从3号位置判断吧,此时3号位置非空,又继续找到一个数字在4号位置。 那怎么区分3还是4号位置 ,存储的是 key 10在hash表所存储的值呢? 不知道理解的对不对
【 在 lw110110 的大作中提到: 】
: 在查询的时候是这样的 比方说你查询10 先用hash()运算得到hashcode是3那么从3开始找起 按照线性探测 直到找到10或者找到空值为止 ,根据你的表 在找到4号位置时就找到10了 ;再比如找17 找到5号位置为空 说明没有找到
: 知道哈希表在进行插入发生冲突时,可以 通过 线性探测等...
继续探测条件是 该值不是你想找的值
停止探测的条件是 找到了这个值或者找到一个空值
对于你所问的 怎么判断10是在4号位置还是3号位置 在你找到10的时候不是就已经直到他在4号位置了吗
不知道理解对不对
【 在 duoniK 的大作中提到: 】
是不是发现非空或未到边界,就应该向下线性探测? 那么...