0
我正在寫一個程序在C中使用一個哈希表作爲一個字典。當加載因子達到75 %時,會創建一個新表,其中舊的大小加倍,而舊的散列表將從內存中釋放。越來越多的動態哈希表
的問題是用戶的主要程序只能訪問一些功能:
create_dictionary()
- 返回一個指向該詞典close_dictionary(dictionary)
add_word(dictionary, word)
所以用戶創建一本詞典,添加大量詞彙,最終字典需要增長。輔助函數在後臺自動調用。現在的問題是,用戶不知道舊字典已被替換,並且指向舊字典的指針不再正確。
解決此問題的最佳方法是什麼?我能以某種方式增加散列表嗎?現在我分配了新的空間,老調重彈舊話了進去,然後刪除舊的哈希表
什麼是「字典」 ?如果它是一個指向後備數組的指針,那麼封裝可能太弱。它應該是一個指向某個'struct'的指針,即使你需要重新分配也不會改變。否則,函數將不得不'返回'新的指針。 (順便說一句,如果你的界面還有一個功能可以在字典中查找某個東西,那麼它會更有用......) – 5gon12eder
你不是第一個在C中實現哈希表的人。看看現有的簡單實現(例如一個來自[Gnulib](https://www.gnu.org/software/gnulib/):['hash.h'](http://git.savannah.gnu.org/gitweb/?p=gnulib.git ; a = blob; f = lib/hash.h; hb = HEAD),['hash.c'](http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob ; F = LIB/hash.c; HB = HEAD))。如果您對您的實施有特定問題,我們需要查看*您的*代碼。 – 5gon12eder