我无法理解为什么我们*将节点用作数据类型?
*(我正在使用CS50,在解决问题集时像这样的木槌)
node *hashtable[50];
(这里的节点是指链表节点) 因为我们只是在其中存储链接列表的指针,所以将其定义为只是一个char *数组不是更好吗?
char *hashtable[50];
答案 0 :(得分:1)
哈希函数存在冲突。当一个键散列到表已被占用的索引时,解决冲突的一种策略在那里有一个链表,您只需将其追加。
还有其他collision resolution个策略,但是separate chaining strategy可能是最简单的。
为了能够将哈希表项视为链接列表,除了其有效负载外,它们还需要至少具有一个next
指针。因此,项目需要是某种struct node*
,而不是直接的有效载荷类型。