下面這個雜湊表的實現來自k&r,很經典。在其他場景中遇到的實現更複雜,基本原理不變,只是在hash演算法,或者在快速查詢上做了優化。
#include
#include
//具有相同hash值構成的鍊錶
struct
nlist;
#define
hashsize 101
//桶的大小
static
struct
nlist *hashtable[hashsize];
//hash table
//字串hash函式
unsigned
hash(
char
*s)
//查詢函式,在
hashtable
中找字串s所在的bucket
struct
nlist *
lookup(
char
*s)
//加入函式,將(name,
defn
)加入到
hashtable
中,如果已經存在則更新
//如果無足夠空間申請表項則返回空
struct
nlist *
install(
char
*name,
char
*defn)
else
//最後統一處理 value
if
((np->
defn
= strdup(defn) ) ==
null)
return
null;
return
np; }
//從雜湊表中刪除乙個key-value
void
undef(
char
*s)
if
(np !=
null)
}
簡單雜湊表實現
雜湊表定義 雜湊表又稱雜湊表,是根據關鍵碼值 key value 而直接訪問的資料結構。它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式 存放記錄的陣列 叫做雜湊表。雜湊表既有陣列的特點 定址容易 又有鍊錶的特點 方便插入,刪除 雜湊表結構示意圖 下面編寫乙個...
雜湊表 雜湊表 C語言簡單實現
本文參考自 大話資料結構 通過某個函式f計算出記錄的儲存位置,而不需要通過比較,這就是一種新的儲存技術 雜湊技術。雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f key 在查詢時,根據這個確定的對應關係找到給定值key的對映f key 若查...
雜湊表(雜湊表)的實現
雜湊函式直接用key size的形式,size為雜湊表的大小。衝突處理採用平方探測法,為保證可以探測到整個雜湊表空間,雜湊表大小設定為4k 3形式的素數。當雜湊表中的元素過多時會造成效能下降,這時應該倍增雜湊表的大小,重新計算原來雜湊表中每個元素在新的雜湊表中的位置。雜湊表的實現 hashtable...