直接定址法
數字分析法
平方取中法
除留餘數法
隨機數法
開放定址法【線性探測法,二次探測法,隨機探測法】
再雜湊函式法
鏈位址法(拉鍊法,雜湊桶)
公共溢位區法
宣告定義
#include
#include
#include
#define field -1
#define null -32768
typedef
struct hashmaphashmap;
hashmap *hashtable;
int k =0;
inthash
(int key)
;void
init
(int i)
;void
hash_map
(int
*key)
;int
search_hash
(int search_key)
;int
linear_probe
(int hash_addr)
;
雜湊建構函式(除留餘數法)int
hash
(int key)
雜湊表初始化void
init
(int k)
}
雜湊表插值函式void
hash_map
(int
*key)
hashtable->array[hash_addr]=*
(key+i);}
}
雜湊查詢函式int
search_hash
(int search_key)
}return hash_addr;
}
防衝突函式(線性探測法)int
linear_probe
(int hash_addr)
主函式int
main()
; i =
sizeof
(array)/4
;//陣列長度
init
(i);
//雜湊表初始化
hash_map
(array)
;//建立雜湊表
printf
("請輸入所要搜尋的key:");
scanf
("%d"
,&search_key)
; search_hash =
search_hash
(search_key);if
(search_hash == field)
printf
("search hash_addr field\n");
else
printf
("search hash_addr succesful!\nthe hash_addr is:%d\n"
,search_hash)
;system
("pause");
return0;
}
線性探測法會使雜湊表出現"堆積"現象,影響雜湊查詢效率。 雜湊 線性探測法
time limit 1 secs,memory limit 256 mb 使用線性探測 法 linear probin g 可以解決雜湊中的衝突問題,其基本思想是 設雜湊函式為 h key d,並且假定雜湊的儲存結構是迴圈陣列 則當衝突發生時 繼續探測 d 1,d 2 直到衝突得到解決 例如,現有...
雜湊之線性探測法
資料結構實驗之查詢七 線性之雜湊表 time limit 1000ms memory limit 65536kb problem description 根據給定的一系列整數關鍵字和素數p,用除留餘數法定義hash函式h key key p,將關鍵字對映到長度為p的雜湊表中,用線性探測法解決衝突。重...
雜湊表 開放位址法之線性探測
雜湊表 優點 速度快 插入和查詢 缺點 基於陣列,不能有序的遍歷 鍵值對儲存方式,通過鍵來訪問值 hashmap.put key value 線性探測屬於開放位址法 線性探測插入演示 陣列最初狀態 在這組資料中要插入83 先對要插入資料雜湊化,雜湊化後的資料就是陣列下標,這裡雜湊化後的資料是23 然...