0
以下是在插入我自己的散列表時碰撞檢測方法的內部。我與小的測試號工作,並試圖讓我的邏輯吧,可變的散列設置爲0,table.length爲10Array迭代,跳躍
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;
}
變量最初需要是什麼我目前的前指數一個是(哈希)。我的問題是,如果散列是0,最初需要設置爲9.我認爲這會工作,但我得到-1時散列設置爲0例如。第一個IF語句循環回到第一個索引,例如,如果您從中間開始5或某些內容,第二個索引將用於檢查所有索引並且全部滿了。
所以你的問題是由於'-1%10'在Java中是'-1'?一個骯髒的問題是使用'(table.length + hash - 1)%table.length',但應該有更好的選擇。 – Blender