雜湊表筆記

2021-08-20 02:46:50 字數 1839 閱讀 6462

md5:

- 不管字串多大,生成的md5長度都是16或32位。

- 幾乎不可逆

- 字串改變,md5變化很大

typedef

enum stat;

//雜湊表儲存的是 鍵值對

typedef

int keytype;

typedef

int caltype;

typedef size_t (*hashfunc) (keytype key);

//這個結構體表示雜湊表中的乙個元素

typedef

struct hashelem hashelem;

//[0,size)這個區間不表示雜湊表中有效元素的區間

typedef

struct hashtable hashtable;

void hshinit(hashtable* ht. hashfuncc hash_func);

void hashdestroy(hashtable* ht);

void hashinsert(hashtable* ht, keytype key, valtype value);

int hashfind(hashtable* ht, keytype key, valtype* value);

void hashdelete(hashtable* ht, keytype key);

size等於0 表示雜湊表無效。

void hash_func(keytype key)

void hshinit(hashtable* ht. hashfuncc hash_func)

}void destroy(hashtable* ht. hashfuncc hash_func)

}void hashinsert(hashtable* ht, keytype key, valtype value)

//1.判斷hash表是否能繼續插入(根據負載因子)

//假設我們此時將負載因子定義為0.8,負載因子小,效率高

if(ht->szie >= 0.8*hashmaxsize)

//2.根據key計算 offset

size_t offset = ht->func(key);

//3.從offset線性往後查詢,找到第乙個狀態為empty的元素來插入

while(1)else

if(ht->data[offset].stat == valid && ht->data[offset].key = key)else

} //end while(1)

}}int hashfind(hashtable* ht, keytype key, valtype* value)

if(ht->size == 0)

//1.根據key計算出offset

size_t offset = ht->func(key);

//2.從offset開始往後查詢,每次取到乙個元素使用key進行比較

while(1)else

if(ht->data[offsete].stat = empty)else

}return0;}

void hashdelete(hashtable* ht, keytype key)

if(ht->size == 0)

// 2.從offset開始一次判定當前元素的key和刪除元素的key是否相等

size_t offset = ht->func(key);

while(1)else

if(ht->data[offset].stat == empty)else

}}

雜湊表筆記

雜湊衝突及解決方法 雜湊表查詢效能分析 雜湊表c語言實現 開放位址 線性檢測法 參考資料 查詢的本質是找到一直物件的位址,有兩種方法 核心 儲存位置 f 關鍵字 該函式f的設計應滿足兩個要求 計算簡單 如果該函式計算比直接遍歷還複雜就得不償失了 盡量均勻 不同關鍵字的函式值均可能均勻分布,避免積聚在...

雜湊表。筆試面試知識整理

雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。雜湊表的實現主要需要解決兩個問題,雜湊函式和衝突解決。雜湊函式也叫雜湊函式,它對不同的輸出值得到乙個固定長度的訊息摘要。理...

python列表筆記

1.列表可以包含任意字元 結構 型別的資料 例 shuaige 帥 有錢 高 95599,true,等等 print shuaige print shuaige 輸出顯示如下 帥 有錢 高 95599,true,等等 帥 有錢 高 95599,true,等等 牛鼻 檢測 解藥 是否在inventor...