#include #include using namespace std;
const int n = 100003;
int h[n] , e[n] , ne[n] , idx;//h是陣列頭,e是存的插的鍊錶的值,ne是其下乙個的idx
一共n個數,經驗上開2n~3n的陣列,先找到大於2n的第乙個質數,然後開這麼大的陣列,定義乙個超過資料範圍的null,然後把陣列全部初始化成0x3f3f3f3f,因為乙個int有32位,memset是4位4位來初始化,寫成0x3f就變成了0x3f3f3f3f。精華在於find函式,如果h函式包含x,返回的是x所在位置;如果沒有,返回的是第乙個找到的空坑。
**如下:
#include #include using namespace std;
const int n = 100003;
int h[n] , e[n] , ne[n] , idx;//h是陣列頭,e是存的插的鍊錶的值,ne是其下乙個的idx
void insert(int x)
bool query(int x)
return false;
}int main()
}return 0;
}
把字串的每個字母看成乙個值,以p進製來表示的值,p按經驗取131或者13331,字串abcd就等於a*p^3+b*p^2+c*p+d,然後對此餘乙個數q,一般q取2^64,我們可以用unsigned long long來存數,相當於取餘了。
kmp演算法能做的雜湊也可以,除了迴圈節之外。
資料結構 雜湊表
1.雜湊表的定義 元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h key 相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h k 若查詢集合中存在這個記錄,則必定在h k 的位置上,這種查詢技術稱為雜湊技術。採用雜湊技術將記錄儲存在一塊連續的...
資料結構 雜湊表
雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...
資料結構 雜湊表
3 雜湊函式 數字分析法 根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。適用情況 能預先估計出全部關鍵碼的每一位上各種數字出現的頻度,不同的關鍵碼集合需要重新分析。4 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...