處理雜湊衝突的開鏈法/拉鍊法 —-雜湊桶
使用素數做雜湊表的長度,可以降低雜湊衝突
素數表
size_t getnextprime(size_t num)//素數表
雜湊桶的節點的定義
template
struct hashnode
};
在插入前檢查容量,以及負載因子。不夠就進行增容,按素數表進行增,以減小雜湊衝突。
找到位置後進行插入,每次插入都插入到表的下乙個節點。如:
插入的為空時:
插入有節點時:
}
從表的一位置開始查詢節點,存在返回節點,不存在返回空。
**:
node* find(const k& key)
return
null;
}
先找到該節點,找到後進行刪除,刪除後返回true,沒找到返回false。
刪除分兩中情況:
第一種,刪除表的第一節點。(如:2、3)
第二種,與第一種情況相反。(如:53、105)
size_t getnextprime(size_t num)//素數表
;for (size_t i = 0; i < _primesize; ++i)
}return _primelist[_primesize - 1];
}protected:
vector
_tables;
size_t _size;
};void testhashtablest()
; hashtable ht1;
for (size_t i = 0; i < sizeof(a) / sizeof(a[0]); ++i)
ht1.find(51);
ht1.remove(51);
ht1.find(51);
ht1.remove(53);
ht1.remove(105);
ht1.find(2);
ht1.find(3);
}"test.cpp"
#include
using
namespace
std;
#include "hashtablest.h"
int main()
hash table 雜湊表(雜湊表)
hash table 也叫雜湊表。涉及到雜湊函式 雜湊衝突處理的問題。雜湊函式是雜湊表的關鍵,是用來從值到雜湊表索引 存放位置 的對映。比如 要存放乙個學校學生的姓名,他們是amanda,jack,andy,tom,bob,black等等500個人。我們可以設計乙個雜湊表,容量為500,來存放這些學...
HashTable 雜湊表(雜湊表)
雜湊表 雜湊表 是根據關鍵字 key 而訪問在記憶體位置的資料結構。其方法是 它通過乙個關鍵值的函式將所需的資料對映到表中的位置來訪問資料,這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表 雜湊表 構造雜湊表的幾種方法 直接定址法 取關鍵字的某個線性函式為雜湊位址,hash key key 或 h...
雜湊表(雜湊)HashTable實現
近期刷leetcode發現凡是找字串中反覆字元或者陣列中找反覆資料的時候就不知道從何下手了。所以決定學習一下雜湊表解題。雜湊表的原理主要是解決分類問題,hash表是介於鍊錶和二叉樹之間的一種中間結構。鍊錶使用十分方便,可是資料查詢十分麻煩 二叉樹中的資料嚴格有序,可是這是以多乙個指標作為代價的結果。...