【发布时间】:2019-07-14 09:48:15
【问题描述】:
我无法理解为什么我们*使用节点作为数据类型?
*(我正在做 CS50 并且在解决问题集时它是这样的)
node *hashtable[50];
(这里的节点指的是链表节点) 因为我们只是在其中存储了一个链表的指针,所以将它定义为一个 char* 数组不是更好吗
char *hashtable[50];
【问题讨论】:
标签: linked-list hashtable cs50
我无法理解为什么我们*使用节点作为数据类型?
*(我正在做 CS50 并且在解决问题集时它是这样的)
node *hashtable[50];
(这里的节点指的是链表节点) 因为我们只是在其中存储了一个链表的指针,所以将它定义为一个 char* 数组不是更好吗
char *hashtable[50];
【问题讨论】:
标签: linked-list hashtable cs50
散列函数有冲突。当一个键散列到一个表已经被占用的索引时,解决冲突的一种策略是在那里有一个链表,你只需附加到它。
还有其他collision resolution 策略,但separate chaining strategy 可能是最简单的。
为了能够将哈希表项视为链表,除了有效负载之外,它们至少需要一个next 指针。因此,这些项目需要是某种struct node*,而不是直接的有效负载类型。
【讨论】: