我们正在学习我的数据结构和算法类中的哈希表,并且我无法理解单独的链接。我知道基本前提:每个存储桶都有一个指向包含键值对的节点的指针,并且每个节点都包含一个指向当前存储桶小型链表中下一个(潜在)节点的指针。这主要用于处理碰撞。哈希表和单独的链接:您如何知道从存储桶列表中返回哪个值?
现在,为了简单起见,假设哈希表有5个桶。假设我在创建一个合适的哈希表实例之后在我的主体中编写了以下几行代码。
myHashTable["rick"] = "Rick Sanchez";
myHashTable["morty"] = "Morty Smith";
让我们想象一下无论散列我们只使用这样的功能恰好产生两个字符串键rick
和morty
同一个桶的索引。为了简单起见,假设存储区索引是索引0。
因此,在我们的哈希表中的索引0处,我们有两个节点,其值为Rick Sanchez
和Morty Smith
,无论我们决定将它们放入哪个顺序(第一个指向第二个)。
当我想以显示rick
相应的价值,这是Rick Sanchez
每这里我们的代码,散列函数会产生0
桶指标如何确定需要返回哪个节点?我是否通过节点循环,直到找到钥匙匹配的那个rick
?
*“难道我遍历节点,直到我发现它的关键比赛里克的人吗?” * - 是的,这就是为什么哈希地图查找是O(n)的中最糟糕的情况,所有键的哈希碰撞。 – jonrsharpe
@jonrsharpe非常感谢你! – Student