生成动态哈希 table

Growing a dynamic hash table

我正在用 C 编写一个程序,它使用散列 table 作为字典。当负载因子达到 75% 时,将创建一个新的 table,其大小是旧的两倍,并且旧的散列 table 会从内存中释放出来。

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

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

解决这个问题的最佳方法是什么?我能以某种方式增加散列 table 吗?现在我分配新的 space,将旧的单词重新散列到其中,然后删除旧的散列 table

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