我正在製作一個使用線性探測作爲衝突解決方法的散列表。我測試了我的其他功能,並且它們按照預期工作,我似乎無法弄清楚刪除中出現了什麼問題。我試圖使用只有在記錄中標記爲已刪除的布爾標誌的懶惰刪除策略。我認爲我錯過了某個邏輯步驟,因爲當傳遞給該函數時,應該刪除的鍵顯然沒有找到。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. Javascript函數似乎返回true時,它應該返回false
- 4. in_array返回false時應該返回true
- 5. 應該返回true,但返回false?
- 6. 函數返回false
- 7. 列表返回false
- 8. 從函數返回記錄
- 9. 如何檢查不應該返回false的函數?
- 10. 如果一個函數在函數中返回false,則返回false
- 11. 如果沒有找到記錄返回false,則返回false
- 12. 什麼散列函數應該散列一個有序的數字列表?
- 13. 僅返回的函數FALSE
- 14. ModelState.IsValid在應該爲true時返回false
- 15. 如何在類中返回False函數?
- 16. PHP SQLite3類'exec'函數在返回false時不返回false
- 17. 函數參數,返回數據庫表中的所有記錄
- 18. 函數總是返回false
- 19. 函數總是返回false
- 20. isAuthenticated返回函數false
- 21. PHP is_file函數返回false
- 22. Woocommerce get_item()函數返回false
- 23. 函數jquery返回false
- 24. php函數json_encode返回false?
- 25. 返回基於記錄列在表FK
- 26. SQL函數 - 返回表中的記錄數值
- 27. iphone:AVAudioRecorder記錄總是返回FALSE
- 28. Laravel 5更新記錄返回false
- 29. 列表(1)#contains()返回`FALSE`
- 30. jQuery .hasClass在不應該返回時返回false?
問題是什麼? –