第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

雙散列HashTable重新散列問題

雙散列HashTable重新散列問題

明月笑刀無情 2021-11-24 14:46:13
我需要為學校項目實現(xiàn)一個具有開放尋址和雙重哈希的哈希表。我最多可以添加 56 個條目,但是當它嘗試添加第 57 個并對其重新哈希時,它說該單詞存在(來自 addWord() 方法)而它不應該存在。for (int k = 0; k < 57; ++k) {    word = "s" + k;    h.addWord(word);    System.out.println("Word = " + word + " KEY = " + h.hash(word));    }輸出:Word = s0 KEY = 0...Rehashing the table!Word = s4 KEY = 11...Rehashing the table!Word = s7 KEY = 14.........Word = s55 KEY = 45Rehashing the table!F28DA_CW1.WException: Word exist!    at F28DA_CW1.HTableWords.addWord(HTableWords.java:124)    at F28DA_CW1.HTableWords.rehash(HTableWords.java:178)    at F28DA_CW1.HTableWords.addWord(HTableWords.java:96)    at F28DA_CW1.test.main(test.java:17)這是我的代碼:import java.util.Arrays;public class test {main 方法類(一切都被破壞了,因為 main 方法想要每個函數(shù)都是靜態(tài)的)public class test {    public static void main(String[] args) {        test t = new test((float) 0.5);        String word = "";        for (int k = 0; k < 2000; ++k) {            word = "s" + k;            try {                t.addWord(word);            } catch (Exception e) {                // TODO Auto-generated catch block                e.printStackTrace();            }        }    }}錯誤似乎在 tempTable[j] = hTable[i]; 線 (166)。我無法弄清楚它有什么問題。任何幫助將不勝感激。我已經(jīng)堅持了2天。編輯:所以問題現(xiàn)在出現(xiàn)在 doubleHash() 方法上,它在 100 個條目后給我一個負數(shù) -27。有人可以驗證公式是否正確嗎?
查看完整描述

1 回答

?
四季花海

TA貢獻1811條經(jīng)驗 獲得超5個贊

現(xiàn)在您需要做的就是用自定義 mod 替換 % 操作,以避免負面結(jié)果。當我這樣做時,我不再在輸出中看到任何可疑的東西。


public static int mod2(int p, int q) {

    int m = p%q;

    if (m<0) return m+q;

    return m;

}


查看完整回答
反對 回復 2021-11-24
  • 1 回答
  • 0 關注
  • 183 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號