1 #include 2 #include 3 #include4 #include 5
using
std::vector;
6using
std::list;
7using std::string;8
using
std::find;910
int hash(const
string &key)
1119
int hash(int
key)
2023
24 template25
class
hashtable
2629
30bool contains(const hashedobj &x) const
3135
void
clear()
3640
bool insert(const hashedobj &x)
4151
bool remove(const hashedobj &x)
5263
64private
:65 vector>thelists;
66int
currentsize;
6768
int myhash(const hashedobj &x) const
6978 };
以上是分離鏈結法的c++實現。
除了分離鏈結法以外,還有一些不使用鍊錶的實現雜湊表的方法,包括線性探測、平方探測、雙雜湊等。
使用分離鏈結法,當出現衝突時,直接將新元素插入對應鍊錶即可。不使用鍊錶時,可採用線性探測、平方探測、雙雜湊等技術來處理衝突。
線性探測&平方探測:h(x) = hash(x)+f(i),其中f(i)分別是i的一次和二次函式。
雙雜湊:h(x) = hash1(x)+f(i)*hash2(x)。
另外,宜使雜湊表大小為素數值,從而使hash值分布更均勻,以減少衝突。
雜湊 分離鏈結法
通過某種特定的函式 演算法 稱為雜湊函式 演算法 將要檢索的項與用來檢索的索引 稱為雜湊,或者雜湊值 關聯起來,生成一種便於搜尋的資料結構 稱為雜湊表 也譯為雜湊。我們需要將輸入的字串進行轉換,將其轉換成數字,在插入儲存的數,當然,也可能會存在不同字串對應相同的數字,這時,為了保證不衝突,我們將字串...
HashTable C 實現之分離鏈結法
hashtable是以常數時間進行進行插入,刪除和查詢的資料結構。其查詢原理是 通過雜湊函式hash 進行雜湊得到value,value為雜湊表的下表。怎麼能得到均衡的value呢?hash 雜湊一般是通過字串對映到鍵值 index hashtable hash one const elemtype...
雜湊表實現 分離鏈結法
雜湊是一種用於以常數平均時間執行插入 刪除和查詢的技術。對於分離鏈結法,裝填因子應接近於1。main函式還不知道怎麼列印。快期中考試了 hashtable.cpp 定義控制台應用程式的入口點。解決衝突的第一種方法叫做分離鏈結法,其做法是將雜湊到 同一值得所有元素保留到乙個表中。include std...