【问题标题】:How to define hash table?如何定义哈希表?
【发布时间】:2019-07-14 09:48:15
【问题描述】:

我无法理解为什么我们*使用节点作为数据类型?
*(我正在做 CS50 并且在解决问题集时它是这样的)

node *hashtable[50];

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

char *hashtable[50];

【问题讨论】:

    标签: linked-list hashtable cs50


    【解决方案1】:

    散列函数有冲突。当一个键散列到一个表已经被占用的索引时,解决冲突的一种策略是在那里有一个链表,你只需附加到它。

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

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

    【讨论】:

    • 那么他们的“payload”也是一个指针,“next”函数也一样吗?
    • 或者其中一个是空的?
    猜你喜欢
    • 2010-12-02
    • 2012-07-29
    • 2018-08-23
    • 2010-10-22
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多