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