C 實現雜湊表的例項

2022-09-29 23:03:22 字數 1533 閱讀 4821

c++ 實現雜湊表的例項

該雜湊表的雜湊函式採用了除法雜湊函式、乘法雜湊函式、全域雜湊函式,每乙個槽都是使用有序單向鍊錶實現。

實現**:

linknode.h

#include

using namespace std;

class link;

class linknode

linknode(int num):key(num),next(null){}

int getkey()

}; link.h

#include"linknode.h"

class hash;

class link

link(linknode* node):head(nwww.cppcns.comode)

~link()

void makeempty()

} int getlength()

void insert(int num)

linknode* q=head,*t=head->next;

if(q->key>num)

while(t)

else

} q->next=p;

} bool delete(int num)

while(t)

else if(t->keynext;

} }

return 0;

} int search(int num)

else if(p->keynext;

} else

} return 0;

} bool isempty()

else

return 0;

} void print(int num)

~hash()

//除法雜湊法

int h1(int num,int m)

//乘法雜湊法

int h2(int num,float a,int m)

//全域雜湊

int h3(int num,int p,int m)

void insert(int num,int n)

else if(n==2)

else

table[key].insert(num);

} bool delete(int num,int n)

else if(n==2)

else

return table[key].delete(num);

} int search(int num,int n)

else if(n==2)

else

if(table[key].search(num)!=0)

else

return -1;

} void print(int num)

; int i;

for(i=0;i<15;i++)

for(i=0;i<15;i++)

cout<

雜湊表(雜湊表) C 實現

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

雜湊表的C 實現

雜湊表的幾個概念 映像 由雜湊函式得到的雜湊表是乙個映像。衝突 如果兩個關鍵字的雜湊函式值相等,這種現象稱為衝突。處理衝突的幾個方法 1 開放位址法 用開放位址處理衝突就是當衝突發生時,形成乙個位址序列,沿著這個序列逐個深測,直到找到乙個 空 的開放位址,將發生衝突的關鍵字值存放到該位址中去。例如 ...

雜湊表(雜湊表)的實現

雜湊函式直接用key size的形式,size為雜湊表的大小。衝突處理採用平方探測法,為保證可以探測到整個雜湊表空間,雜湊表大小設定為4k 3形式的素數。當雜湊表中的元素過多時會造成效能下降,這時應該倍增雜湊表的大小,重新計算原來雜湊表中每個元素在新的雜湊表中的位置。雜湊表的實現 hashtable...