資料結構 雜湊表2(雜湊表)

2021-09-12 07:58:13 字數 2847 閱讀 6411

**開放位址法:**當衝突發生時,通過查詢陣列中的乙個空位,並將資料確認,而不是用雜湊函式得到的陣列下標。

缺點:將別的物件的位置占用了。別的物件儲存的時候只能查詢位置來存放。

**鏈位址法:**在雜湊表每個單元中設定鍊錶,某個資料項的關鍵字還是像通常一樣對映到雜湊表的單元中,而資料項本身插入到單元的鍊錶中。

建立乙個儲存物件類

public class info 

public string getkey()

public void setkey(string key)

public string getname()

public void setname(string name)

}

建立雜湊表

public class hashtable 

public hashtable(int maxsize)

/*** 插入資料

* * @param info

*/public void insert(info info)

arr[hashval] = info;

} /**

* 查詢操作

* * @param key

* @return

*/public info find(string key)

++hashvalue;

hashvalue %= arr.length;

} return null;

} /**

* 刪除資料

* * @param key

* @return

*/public info delete(string key)

++hashval;

hashval %= arr.length;

} return null;

} /**

* 將字串字母轉換為ascii碼,然後跟乙個指定的數字的冪相乘,得到的結果進行取模

* * @param key

* @return

*/public int hashcode(string key)

return hashvalue.mod(new biginteger(string.valueof(arr.length)))

.intvalue();

}}

注意:這裡的刪除操作是將原先儲存的物件的name設為null,我們也可以通過其他方式來進行標註刪除該物件的操作。

建立乙個儲存物件類同上;

建立乙個鏈節點類

/**

* 鏈節點類

* * @author tiger

* */

public class node

}

建立乙個鍊錶類

/**

* 鍊錶

* * @author tiger

* */

public class linklist

/*** 插入乙個節點,在頭結點後進行插入

* * @param value

*/public void insertfirst(info value)

/*** 刪除乙個節點,在頭結點進行刪除

*/public node deletefirst()

/*** 通過節點中的資料查詢指定節點

* * @param value

* @return

*/public info find(string key)

current = current.next;

} return current.info;

} /**

* 刪除方法,根據資料域進行刪除

* * @param value

* @return

*/public info delete(string key)

previous = current;

current = current.next;

} if (current == first) else

return current.info;

}}

建立乙個雜湊錶類

public class hashtable 

public hashtable(int maxsize)

/*** 插入資料

* * @param info

*/public void insert(info info)

arr[hashval].insertfirst(info);

} /**

* 查詢操作

* * @param key

* @return

*/public info find(string key)

return null;

} /**

* 刪除資料

* * @param key

* @return

*/public info delete(string key)

return null;

} /**

* 將字串字母轉換為ascii碼,然後跟乙個指定的數字的冪相乘,得到的結果進行取模

* * @param key

* @return

*/public int hashcode(string key)

return hashvalue.mod(new biginteger(string.valueof(arr.length)))

.intvalue();

}}

資料結構 雜湊表(雜湊表)hash table

hash table 在計算機中,雜湊表 是 一種實現了關聯陣列 抽象資料型別的資料結構,這種資料結構可以對映 鍵 key 和 值 value 補充 關聯陣列 在電腦科學中,乙個關聯陣列 associative array 對映 map 符號表 symbol table 或者是字典 dictiona...

資料結構 雜湊表 雜湊表 原理

記錄的儲存位置 f 關鍵字 這裡的對應關係f稱為雜湊函式,又稱為雜湊 hash函式 採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續儲存空間稱為雜湊表或雜湊表 hash table 雜湊表hashtable key,value 就是把key通過乙個固定的演算法函式既所謂的雜湊函式轉換成乙個整型...

資料結構 雜湊表查詢(雜湊表)

對於查詢,有順序表直接遍歷,有折半查詢直到查詢成功。但是這都需要不斷的比較,每一次查詢都需要重新遍歷,所以當資料龐大時是非常耗時的。雜湊表是一種可以避免多次比較,直接通過關鍵字就可以得到要查詢的記錄記憶體儲存位置。例如就像是乙個函式,每乙個自變數都對應著乙個函式值,即 這屬於雜湊技術,不需要比較就可...