C實現 雜湊查詢

2021-09-05 10:10:11 字數 1951 閱讀 6609

1.實驗目的

(1) 掌握雜湊查詢的基本思想;

(2) 掌握閉雜湊表的構造方法;

(3) 掌握線性探測處理衝突的方法;

(4) 驗證雜湊技術的查詢效能。

2.實驗內容

(1) 對於給定的一組整數和雜湊函式,採用線性探測法處理衝突構造雜湊表;

(2) 設計查詢演算法,驗證查詢效能。

3.實現提示

首先將待查詢集合儲存到閉雜湊表ht中,然後隨機生成待查元素的下標,考查在查詢成功情況下的比較次數。

4.實驗程式

#include #include #define ok 1

#define error 0

#define success 1

#define unsuccess 0

#define hashsize 7 //定義雜湊表表未陣列的長度

#define nullkey -32768

typedef struct

hashtable;

int m = hashsize; //雜湊表長,全域性變數

//初始化雜湊表

int inithashtable(hashtable *h)

for (i = 0; i < m; i++)

return ok;

}//雜湊函式

int hash(int key)

//插入關鍵字進雜湊表

void inserthash(hashtable *h, int key)

h->elem[addr] = key; //直到有空位後插入關鍵字

}//雜湊表查詢關鍵字

int searchhash(hashtable h, int key)

} printf("查詢成功,%d 在hash表第 %d 個位置.\n", key, addr+1);

return success;

}int main(int argc, char **argv)

//插入資料

printf("\n現在插入資料,請輸入(a代表結束哦).\n");

while (scanf_s("%d", &i) == 1)

inserthash(&h, i);

} //列印插入資料後hash表的內容

printf("插入資料後hash表的內容為:\n");

for (i = 0; i < hashsize; i++)

printf("\n雜湊表:\t");

for (i = 0; i < hashsize; i++)

printf("\n現在進行查詢.\n");

searchhash(h, 22);

searchhash(h, 3);

system("pause");

return 0;

}

5.實驗結果

6.實驗心得光讀課本對雜湊表和雜湊查詢理解的不很通透,但通過這次實驗,平面的文字在我的腦海裡建立起了立體的概念。雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f(key)。建立了關鍵字與儲存位置的對映關係

,f稱為雜湊函式,又稱為雜湊(hash)函式。

這次實驗我使用的是開放定值法之一的線性探測法,來解決對於給定的一組整數和雜湊函式,處理衝突構造雜湊表問題。本身想再建乙個陣列用來存放比較次數,嘗試在插入關鍵字函式中計算單個資料的比較次數,但該次數分雜湊表為空或衝突兩種情況,比較複雜,修改多次後最終還是放棄了計算比較次數。

c實現雜湊查詢

雜湊查詢,也稱為雜湊查詢 本文以雜湊稱呼 雜湊它是由一組key value的鍵值對組成的集合,它就是應用了雜湊技術。那麼,什麼是雜湊查詢呢?在弄清楚什麼是雜湊查詢之前,我們要弄清楚雜湊技術,雜湊技術是在記錄的儲存位置和記錄的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f ...

C 雜湊查詢演算法簡單實現

示例 主要使用雜湊表的摺疊法,其實只要懂原理,其實都好辦這種 標頭檔案部分 include stdafx.h 雜湊結果 enum hash result type 構建類似map的結構體 不使用std自帶的方法 struct map class batch int m index 當前位置 map ...

雜湊表查詢實現

結構定義 define hashsize 12 typedef struct hashtable int m 0 雜湊表表長,全域性變數 初始化 初始化雜湊表 status inithashtable hashtable h 雜湊函式 雜湊函式 int hash int key 插入 插入關鍵字進雜...