一般雜湊 開放選址法

2021-10-08 02:32:54 字數 872 閱讀 2080

(2).開放選址法(茅坑法)

模板(一般雜湊 —— 模板題 acwing 840. 模擬雜湊表)

const int n,null=0x3f3f3f3f;

int h[n];

// 如果x在雜湊表中,返回x的下標;如果x不在雜湊表中,返回x應該插入的位置

int find(int x)

return t;

}

acwing840. 模擬雜湊表

維護乙個集合,支援如下幾種操作:

「i x」,插入乙個數x;

「q x」,詢問數x是否在集合**現過;

現在要進行n次操作,對於每個詢問操作輸出對應的結果。

輸入格式

第一行包含整數n,表示運算元量。

接下來n行,每行包含乙個操作指令,操作指令為」i x」,」q x」中的一種。

輸出格式

對於每個詢問指令「q x」,輸出乙個詢問結果,如果x在集合**現過,則輸出「yes」,否則輸出「no」。

每個結果佔一行。

資料範圍

1≤n≤105

−109≤x≤109

輸入樣例:

5i 1

i 2i 3

q 2q 5

輸出樣例:

yesno

#include #include using namespace std;

const int n=200003,null=0x3f3f3f3f;

int h[n];

int find(int x)

return t;

}int main()

else

}return 0;

}

一般雜湊 拉鍊法

1 拉鍊法 模板 一般雜湊 模板題 acwing 840.模擬雜湊表 int e n ne n h n idx 向雜湊表中插入乙個數 void insert int x 在雜湊表中查詢某個數是否存在 bool find int x memset h,1,sizeof 1 840.模擬雜湊表 維護乙個...

演算法 模擬雜湊表(雜湊拉鍊法,開放選址法)

用陣列h n 來表示拉鍊法上對應的鏈,如果遇到衝突則在對應衝突的位置開乙個鏈,建立鏈的方式和之前單鏈表的方式相同。如果要插入乙個值 計算當前值在雜湊之後的對映位置int k x n n n 之所以要取兩次模,是為了處理負數的模 將x儲存在e idx 中 該鍊錶的下乙個位置就是當前衝突位置的鍊錶的頭,...

雜湊 開放定址法

引起雜湊衝突的乙個原因可能是 雜湊函式設計不夠合理。雜湊函式設計原則 雜湊函式的定義域必須包括需要儲存的全部關鍵碼,而如果雜湊表允許有m個位址時,其值域必須在0到m 1之間 雜湊函式計算出來的位址能均勻分布在整個空間中 雜湊函式應該比較簡單 閉雜湊typedef int keytype typede...