(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...