C語言 生成雜湊表 線性探測法

2021-10-01 04:12:21 字數 1714 閱讀 1176

直接定址法

數字分析法

平方取中法

除留餘數法

隨機數法

開放定址法【線性探測法,二次探測法,隨機探測法】

再雜湊函式法

鏈位址法(拉鍊法,雜湊桶)

公共溢位區法

宣告定義

#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 然...