Hash 独立链接:不成功的seaches需要多少关键比较?

Hash 独立链接:不成功的seaches需要多少关键比较?,hash,hashtable,Hash,Hashtable,我找不到任何关于键比较不成功搜索如何计数的明确信息(使用链接列表进行链接) 也许有人可以通过以下例子向我解释: h(k)=k;m=4 0 | |-| 1 | | 9 | 2 | |>6 | 10 | 3 | |>7 | 假设我搜索4,是否需要进行0或1键比较才能发现值不在表中? 如果我搜索14,需要多少关键比较?2.3?您认为它是如何工作的?“假设我搜索4”-你能计算出将散列到哪个桶吗?给定h(k)=k,散列值为4,如果在除以桶数(4)后取余数,则得到0-因此桶数为0。其中,当前没有条目,因此很

我找不到任何关于键比较不成功搜索如何计数的明确信息(使用链接列表进行链接)

也许有人可以通过以下例子向我解释:

h(k)=k;m=4

0 | |-|
1 | | 9 |
2 | |>6 | 10 |
3 | |>7 |

假设我搜索4,是否需要进行0或1键比较才能发现值不在表中?
如果我搜索14,需要多少关键比较?2.3?

您认为它是如何工作的?“假设我搜索4”-你能计算出将散列到哪个桶吗?给定h(k)=k,散列值为4,如果在除以桶数(4)后取余数,则得到0-因此桶数为0。其中,当前没有条目,因此很明显,值4当前不在表中。那么,你将如何回答自己14年的问题?你不确定什么?是的,我了解哈希的工作原理,但我的问题是,对于那些不成功的搜索,需要多少关键比较操作。您可以实现一个函数,在将键与null进行比较之前检查索引是否为空。因此,搜索4可能需要0或1键比较操作。常见做法是什么?散列表的单独链接实现的常见做法是在bucket中有某种
结构节点{key\u type k\u;Node*p\u next;}
结构,以及
节点*
。如果bucket包含一个
nullptr
,那么您甚至没有要查看的
节点
结构,因此没有要比较的关键对象。类似地,如果有一个节点包含(比如)6作为键,并且
Node*
nullptr,则只能进行一个键比较。在忽略指针/nullptr比较的同时考虑键比较是很常见的,因为前者可能会非常昂贵。