雜湊表(雜湊表)的實現

2021-07-04 20:58:48 字數 1349 閱讀 3386

雜湊函式直接用key%size的形式,size為雜湊表的大小。

衝突處理採用平方探測法,為保證可以探測到整個雜湊表空間,雜湊表大小設定為4k+3形式的素數。

當雜湊表中的元素過多時會造成效能下降,這時應該倍增雜湊表的大小,重新計算原來雜湊表中每個元素在新的雜湊表中的位置。

雜湊表的實現

// hashtable.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#includeusing namespace std;

enum state;

templatestruct hashnode

};const int prime_size = 5;

const static int prime[prime_size] //素數表,形式為4k+3,保證可以探測到整個雜湊表空間

=;templateclass hashtable

int find_next_prime()

return size;

} void rehash()//alpha>max_alpha時調整雜湊表大小

}deletehashtable;

hashtable = newhashtable;

size = newsize;

alpha =get_alpha();

}public:

hashtable()

bool insert(t key)

if (hashtable[index].sta == busy&&hashtable[index].key == key)

if (hashtable[index].sta == busy&&hashtable[index].key == key)

count++;

} } int find(t key)

if (hashtable[index].key== key)

index = (key - count*count) % size;

while (index < 0)

if (hashtable[index].sta != busy)

if (hashtable[index].key == key)

count++;

if (count > size / 2 + 1)

return -1;

} }bool erase(t key)

return false;

} double get_alpha()

~hashtable() };

int _tmain(int argc, _tchar* argv)

雜湊表(雜湊表) C 實現

雜湊函式就是 關鍵字key 到 值value 的對映 value f key value反映的是關鍵字key的儲存位址。直接定址法 f key a key b 例如存放不同出生年份的人口數量,出生年份是關鍵字,那麼可以用直接定址法。直接定址法的優點是簡單均勻,也不會產生衝突 缺點是該方法適合表比較小...

雜湊表 雜湊表 的實現原理

雜湊表可以表述為,是一種可以根據關鍵字快速查詢資料的資料結構。通常情況下,不論雜湊表中資料有多少,增加,刪除,改寫資料的複雜度平均都是o 1 效率非常高。如果說每乙個資料它都對應著乙個固定的位置,那我們查詢特定乙個資料時,就可以直接檢視這個資料對應的位置是否存在資料。乙個形象的例子就是學生在教室中的...

雜湊表 雜湊表

一 定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。雜湊表的做法其實很簡單,就是把key通過乙個固定的演算法函式...