如何定义哈希表?

时间:2019-07-14 09:48:15

标签: linked-list hashtable cs50

我无法理解为什么我们*将节点用作数据类型?
*(我正在使用CS50,在解决问题集时像这样的木槌)

node *hashtable[50];

(这里的节点是指链表节点) 因为我们只是在其中存储链接列表的指针,所以将其定义为只是一个char *数组不是更好吗?

char *hashtable[50];

1 个答案:

答案 0 :(得分:1)

哈希函数存在冲突。当一个键散列到表已被占用的索引时,解决冲突的一种策略在那里有一个链表,您只需将其追加。

还有其他collision resolution个策略,但是separate chaining strategy可能是最简单的。

为了能够将哈希表项视为链接列表,除了其有效负载外,它们还需要至少具有一个next指针。因此,项目需要是某种struct node*,而不是直接的有效载荷类型。