这是我对线性探测的理解。
对于插入: - 我们散列到某个位置。如果该位置已经有值,我们线性递增到下一个位置,直到我们遇到一个空位置,然后我们插入那里。那讲得通。
我的问题围绕着查找。从我读过的描述中,我相信查找是这样的:
- 我们查看我们正在寻找哈希的项目的位置。
- 如果位置为空,我们返回 Not Found
- 如果位置已满,我们会线性移动到位置,直到遇到我们要查找的值,或者遇到空位置(意味着未找到)
那么当我们从散列中删除一个项目时,这是如何工作的呢?这不会弄乱这个查找吗?说两个项目散列到相同的位置。我们添加这两个项目,然后删除我们添加的第一个项目。所以现在,第二个项目的预期位置(必须移动到不同的位置,因为第一个项目最初占据了它)是空的。删除是否以某种方式处理这个问题?