如何定义哈希table?
How to define hash table?
我无法理解为什么我们*使用节点作为数据类型?
*(我正在做 CS50 并且在解决问题集时它是这样的)
node *hashtable[50];
(这里的节点是指链表节点)
因为我们只是在其中存储一个链表的指针,所以将它定义为一个 char*
数组不是更好吗?
char *hashtable[50];
散列函数有冲突。当键散列到 table 已被占用的索引时,解决冲突的一种策略在那里有一个链表,您只需附加到它即可。
还有其他的collision resolution strategies, but the separate chaining strategy大概是最简单的
为了能够将散列 table 项目视为链表,除了有效负载之外,它们还需要至少有一个 next
指针。因此,这些项目需要是某种 struct node*
而不是直接的有效负载类型。
我无法理解为什么我们*使用节点作为数据类型?
*(我正在做 CS50 并且在解决问题集时它是这样的)
node *hashtable[50];
(这里的节点是指链表节点) 因为我们只是在其中存储一个链表的指针,所以将它定义为一个 char*
数组不是更好吗?char *hashtable[50];
散列函数有冲突。当键散列到 table 已被占用的索引时,解决冲突的一种策略在那里有一个链表,您只需附加到它即可。
还有其他的collision resolution strategies, but the separate chaining strategy大概是最简单的
为了能够将散列 table 项目视为链表,除了有效负载之外,它们还需要至少有一个 next
指针。因此,这些项目需要是某种 struct node*
而不是直接的有效负载类型。