增长动态哈希表

时间:2016-01-02 04:04:40

标签: c hashmap hashtable

我在C中编写一个使用哈希表作为字典的程序。当加载因子达到75%时,将创建一个新表,其中旧的大小加倍,旧的哈希表将从内存中释放。

问题是用户的主程序只能访问少数几个功能:

  • create_dictionary() - 返回指向词典的指针
  • close_dictionary(dictionary)
  • add_word(dictionary, word)

因此,用户创建了一个字典,添加了很多单词,最终字典需要增长。辅助函数在后台自动调用。现在的问题是用户不知道旧字典已被替换,并且指向旧字典的指针不再正确。

解决此问题的最佳方法是什么?我可以以某种方式增加哈希表吗?现在我分配新空间,将旧单词重新分配到其中,然后删除旧散列表

1 个答案:

答案 0 :(得分:1)

一种可能性是让指针指向支持结构。在该结构中,您可以放置​​哈希表的大小,它包含的元素数量以及指向表的指针。当您检测到已超出75%时,您将分配一个更大的表,将旧值散列到新表中,然后释放旧表并使结构中的指针指向新表