**開放位址法:**當衝突發生時,通過查詢陣列中的乙個空位,並將資料確認,而不是用雜湊函式得到的陣列下標。
缺點:將別的物件的位置占用了。別的物件儲存的時候只能查詢位置來存放。
**鏈位址法:**在雜湊表每個單元中設定鍊錶,某個資料項的關鍵字還是像通常一樣對映到雜湊表的單元中,而資料項本身插入到單元的鍊錶中。
建立乙個儲存物件類
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通過乙個固定的演算法函式既所謂的雜湊函式轉換成乙個整型...
資料結構 雜湊表查詢(雜湊表)
對於查詢,有順序表直接遍歷,有折半查詢直到查詢成功。但是這都需要不斷的比較,每一次查詢都需要重新遍歷,所以當資料龐大時是非常耗時的。雜湊表是一種可以避免多次比較,直接通過關鍵字就可以得到要查詢的記錄記憶體儲存位置。例如就像是乙個函式,每乙個自變數都對應著乙個函式值,即 這屬於雜湊技術,不需要比較就可...