雜湊表查詢演算法實現

2021-08-19 22:11:06 字數 832 閱讀 2277

#define success 1

#define hashsize 12 /* 定義雜湊表長為陣列的長度 */

#define nullkey -32768

typedef struct

hahtable;

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

有了結構的定義,我們可以對雜湊表進行初始化。
/* 初始化雜湊表 */

status inithashtable (hashtable *h)

為了插入時計算位址,我們需要定義雜湊函式,雜湊函式可以根據不同情況更改演算法。
/* 雜湊函式 */

int hash(int key)

初始化完成後,我們可以對雜湊表進行插入操作。假設我們插入的關鍵字集合就是前面的。
/* 插入關鍵字進雜湊表 */

void inserthash (hahtable *h,int key)

**中插入關鍵字時,首先算出雜湊位址,如果當前位址不為空關鍵字,則說明有衝突。此時我們應用開放定址法的線性探測進行重新定址,此處也可更改為鏈位址法等其他解決衝突的辦法。

雜湊表存在後,我們在需要時就可以通過雜湊表查詢要的記錄。

/* 雜湊表查詢關鍵字 */

status searchhash(hashtable h,int key,int

*addr)

}return success;

}

查詢的**與插入的**非常類似,只需做乙個不存在關鍵字的判斷而已

查詢演算法 雜湊演算法,雜湊表查詢

那麼問題來了,如果集合s中同時存在值k 16和值k 27,我們該如何將兩個位址一樣的值存入雜湊表呢?常用的雜湊函式 處理衝突的方法 2.連位址法 雜湊表涉及的是一種對映關係,可以根據某個值查詢到關鍵字的位址,這樣的做法省去了比較的時間,優化了演算法。雜湊表是把值 關鍵字 存到跟它具有 唯一 對映的格...

演算法 查詢 雜湊表查詢

查詢除了線性表的查詢 順序 二分 分塊 樹上查詢 bst b 樹 還有一種雜湊查詢。相比於前兩種查詢,雜湊表的查詢效率驚人的高o 1 它採用的直接定址技術,基本上就是實現了精準打擊,達到一擊而中的效果。所謂的直接定址技術,說白了,就是儲存記錄時,通過雜湊函式計算出乙個雜湊位址 讀取記錄時,通過同樣的...

《演算法》 查詢 雜湊表

雜湊表也是一種符號表,主要特徵是可以將鍵通過雜湊函式對映為乙個陣列索引,然後利用這個陣列索引就可以做很多東西。當我們輸入乙個物件,不論這是個什麼東西,經過雜湊函式處理之後輸出乙個0到m 1的範圍之內的整數。對於雜湊函式有一些要求 相等的物件 使用equals 函式 的雜湊值是相同的 2.同樣的雜湊值...