資源簡介
選取哈西函數h(k)=k%11,用線性探測在散列方法處理沖突。是在0-10的散列地址中,對關鍵序列(22,41,53,46,30,01,67)構造哈希表并求等概率情
況下查找成功與不成功過的平均查找長度
代碼片段和文件信息
/*第八章,12題??選取哈西函數h(k)=k%11,用線性探測在散列方法處理沖突。是
在0-10的散列地址中,對關鍵序列(22415346300167)構造哈希表并求等概率情
況下查找成功與不成功過的平均查找長度*/
#include
#include
#define??m???11?????
#define??NULLKEY??0
typedef??int??KeyType;????/*?假設關鍵字為整型?*/
typedef??struct
{
KeyType??key;
}RecordType;
typedef??RecordType??HashTable[m];
int?hash(KeyType?k)/*選取哈西函數h(k)=k%11對傳入的隨便的一個
?????????????????整數,返回經過哈西函數計算后的的一個數*/
{
int?h;
h=(3*k)%m;
return?h;
}
int??HashSearch(?HashTable??ht??KeyType??K)?/*傳入插入數據后的哈希表的首地址
?????????????????????????????????????和要查找的數值,返回找到的數據值的地址*/
{
int?h0;
int?i;
int?hi;
h0=hash(K);
if??(ht[h0].key==NULLKEY)???????????/*這個地址沒有存數據*/
return?(-1);?????????????????/*沒有找到數據*/
else?
if?(ht[h0].key==K)??????????????/*直接就找到該地址*/
return?(h0);?????????????????/*返回該地址*/
else???/*?有沖突,用線性探測再散列解決沖突?*/
{?
for?(i=1;?i<=m-1;??i++)
{
hi=(3*h0+i)?%?m;
if??(ht[hi].key==NULLKEY)???/*這個地址沒有存數據*/
return?(-1);?????
- 上一篇:C語言讀取dat文件
- 下一篇:單片機C語言 廣告流水燈中斷控制含 DSN
評論
共有 條評論