我正在制作一个使用线性探测作为冲突解决方法的散列表。我测试了我的其他功能,并且它们按照预期工作,我似乎无法弄清楚删除中出现了什么问题。我试图使用只有在记录中标记为已删除的布尔标志的懒惰删除策略。我认为我错过了某个逻辑步骤,因为当传递给该函数时,应该删除的键显然没有找到。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?
问题是什么? –