以下は、自分のハッシュテーブルに挿入する際の衝突検出メソッドの内部です。私は小さなテスト番号で作業していて、ロジックを正しくしようとしています。変数ハッシュは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かそこらの途中から開始した場合、最初のインデックスにループバックします。2番目のステートメントは、すべてのインデックスをチェックし、それらがすべていっぱいになった場合に使用します。