雜湊之分離鏈結法

2022-09-12 12:42:18 字數 1007 閱讀 1093

1 #include 2 #include 3 #include 

4 #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...