【发布时间】:2016-01-02 04:04:39
【问题描述】:
我正在用 C 语言编写一个使用哈希表作为字典的程序。当负载因子达到 75% 时,将创建一个大小为旧大小两倍的新表,并从内存中释放旧的哈希表。
问题是用户的主程序只能访问几个功能:
-
create_dictionary()– 返回一个指向字典的指针 close_dictionary(dictionary)add_word(dictionary, word)
所以用户创建了一个字典,添加了很多单词,最终字典需要增长。辅助函数在后台自动调用。现在的问题是用户不知道旧字典已被替换,并且指向旧字典的指针不再正确。
解决此问题的最佳方法是什么?我可以以某种方式增长哈希表吗?现在我分配新空间,将旧词重新散列到其中,然后删除旧的哈希表
【问题讨论】:
-
什么是
dictionary?如果它是指向后备数组的指针,则您的封装可能太弱了。它应该是指向一些struct的指针,即使您需要重新分配也不会改变。否则,该函数将不得不return新指针。 (顺便说一句,如果您的界面还具有在字典中查找内容的功能,您的界面会更有用……)