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