我正在製作一個使用線性探測作爲衝突解決方法的散列表。我測試了我的其他功能,並且它們按照預期工作,我似乎無法弄清楚刪除中出現了什麼問題。我試圖使用只有在記錄中標記爲已刪除的布爾標誌的懶惰刪除策略。我認爲我錯過了某個邏輯步驟,因爲當傳遞給該函數時,應該刪除的鍵顯然沒有找到。remove函數返回false應該在散列表中的記錄
回答
我看到remove
的幾個問題。
最主要的是你的idx
計算在你的循環中是錯誤的。它應該是
int idx = (hash + i) % LargerMax;
像你在update
。
您沒有正確處理刪除的記錄。想想看你的列表是什麼樣的,如果你插入兩條記錄(A,然後是B)具有smae散列值,然後刪除記錄A.你如何找到B? (請在閱讀之前仔細閱讀。)
當您步行穿過records_
時,找到已刪除的節點時,需要跳過它並轉到下一個節點。只有在找到NULL記錄時才停止搜索。
如果您搜索了所有節點並且沒有找到它,您還需要在該函數的末尾添加return false
。
謝謝,我會接受你的建議,現在就嘗試一下。將回報。 – user7795742
任何僞代碼爲:(A,然後B)具有smae散列值,然後刪除記錄A.如何找到B? (在閱讀之前思考這個問題? – user7795742
在計算邏輯實現方面遇到問題 – user7795742
- 1. 散列函數是否應該返回散列的數值或該值%numBuckets?
- 2. 在jbuilder中函數返回散列的散列數組
- 3. in_array返回false時應該返回true
- 4. 應該返回true,但返回false?
- 5. 如何檢查不應該返回false的函數?
- 6. 僅返回的函數FALSE
- 7. ModelState.IsValid在應該爲true時返回false
- 8. PHP SQLite3類'exec'函數在返回false時不返回false
- 9. 函數參數,返回數據庫表中的所有記錄
- 10. 函數jquery返回false
- 11. php函數json_encode返回false?
- 12. isAuthenticated返回函數false
- 13. Woocommerce get_item()函數返回false
- 14. 返回基於記錄列在表FK
- 15. SQL函數 - 返回表中的記錄數值
- 16. 函數顯示列表的第n個元素,返回false。
- 17. 包裝返回記錄的OCaml函數
- 18. 排序函數返回的setof記錄
- 19. get_result在它應該返回時不會返回false
- 20. var_dump在應該返回true時返回false
- 21. 應該jquery組件返回false
- 22. File.Exists返回True時應該是False
- 23. 我應該返回false,異常等
- 24. 查詢不返回布爾列設置爲FALSE的記錄?
- 25. 散列表作爲C++函數的返回類型
- 26. 即使他們在子表中沒有記錄,我該如何返回記錄?
- 27. 如何從函數返回setof記錄?
- 28. 如何從函數返回記錄集
- 29. PostgreSQL遞歸函數返回記錄集
- 30. Postgres錯誤:列定義列表只允許返回「記錄」的函數
問題是什麼? –