以下是插入我自己的哈希表时进行碰撞检测的方法的内部。我正在使用小的测试数字并试图让我的逻辑正确,变量哈希设置为 0,table.length 为 10。
else
{
//problem here
int initial=(hash-1)%table.length;
while (table[hash]!=null)
{
hash+=1;
System.out.println(initial);
if (hash==table.length)
{
hash=0;
}
if (hash==initial)
{
System.out.println("FULL!");
break;
}
变量 initial 必须是我当前的索引(哈希)之前的索引。我的问题是,如果哈希为 0,则初始值需要设置为 9。我认为这会起作用,但例如当哈希设置为 0 时我得到 -1。第一个 IF 语句循环返回到第一个索引,例如,如果您从 5 点或某处开始,第二个是 for 当您检查了所有索引并且它们都已满时。