91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 190KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-05-09
  • 語言: 其他
  • 標(biāo)簽:

資源簡介

對一批關(guān)鍵字集合采用開放定址哈希表的存儲結(jié)構(gòu)來建立相應(yīng)的哈希表和完成查找過程。 (1) 熟練掌握哈希表的構(gòu)造方法 (2) 理解哈希表與其他結(jié)構(gòu)表的實質(zhì)性差別。

資源截圖

代碼片段和文件信息

#include
#include
#include
#include
#include?
#include
#include
#define?TRUE?1
#define?FALSE?0
#define?OK?1
#define?ERROR?0
#define?SUCCESS?1
#define?UNSUCCESS?0
#define?DUPLICATE?-1
#define?NULLKEY?0?//?0為無記錄標(biāo)志
#define?N?10?//?數(shù)據(jù)元素個數(shù)
#define?EQ(ab)?((a)==(b))
#define?LT(ab)?((a)<(b))
#define?LQ(ab)?((a)<=(b))
typedef?int?Status;?//?Status是函數(shù)的類型其值是函數(shù)結(jié)果狀態(tài)代碼,如OK等
typedef?int?Boolean;?//?Boolean是布爾類型其值是TRUE或FALSE
typedef?int?KeyType;?//?設(shè)關(guān)鍵字域為整型

struct?ElemType?//?數(shù)據(jù)元素類型
{
???KeyType?key;
???int?ord;
};

int?hashsize[]={11192937};?//?哈希表容量遞增表,一個合適的素數(shù)序列
int?m=0;?//?哈希表表長,全局變量
struct?HashTable
{
???ElemType?*elem;?//?數(shù)據(jù)元素存儲基址,動態(tài)分配數(shù)組
???int?count;?//?當(dāng)前數(shù)據(jù)元素個數(shù)
???int?sizeindex;?//?hashsize[sizeindex]為當(dāng)前容量
};

Status?InitHashTable(HashTable?&H)//?操作結(jié)果:?構(gòu)造一個空的哈希表
{?int?i;
???H.count=0;?//?當(dāng)前元素個數(shù)為0
???H.sizeindex=0;?//?初始存儲容量為hashsize[0]
???m=hashsize[0];
???H.elem=(ElemType*)malloc(m*sizeof(ElemType));
???if(!H.elem)
?????exit(OVERFLOW);?//?存儲分配失敗
???for(i=0;i?????H.elem[i].key=NULLKEY;?//?未填記錄的標(biāo)志
???return?OK;
}

void?DestroyHashTable(HashTable?&H)
{?free(H.elem);
???H.elem=NULL;
???H.count=0;
???H.sizeindex=0;
}

unsigned?Hash(KeyType?K)//?一個簡單的哈希函數(shù)(m為表長,全局變量)
{?return?K%m;
}

void?collision(int?&pint?d)?//?線性探測再散列
{?
???p=(p+d)%m;//?開放定址法處理沖突
}

Status?SearchHash(HashTable?HKeyType?Kint?&pint?&c)//?在開放定址哈希表H中查找關(guān)鍵碼為K的元素若查找成功以p指示待查數(shù)據(jù)
{?p=Hash(K);?//?求得哈希地址
???while(H.elem[p].key!=NULLKEY&&!EQ(KH.elem[p].key))
???{?//?該位置中填有記錄.并且關(guān)鍵字不相等
?????c++;
?????if(c???????collision(pc);?//?求得下一探查地址p
?????else
???????break;
???}
???if?EQ(KH.elem[p].key)
?????return?SUCCESS;?//?查找成功,p返回待查數(shù)據(jù)元素位置
???else
?????return?UNSUCCESS;?//?查找不成功(H.elem[p].key==NULLKEY),p返回的是插入位置
}

Status?InsertHash(HashTable?&ElemType);?//?對函數(shù)的聲明
void?RecreateHashTable(HashTable?&H)?//?重建哈希表
{?int?icount=H.count;
???ElemType?*p*elem=(ElemType*)malloc(count*sizeof(ElemType));
???p=elem;
???printf(“重建哈希表\n“);
???for(i=0;i???if((H.elem+i)->key!=NULLKEY)?//?該單元有數(shù)據(jù)
???*p++=*(H.elem+i);
???H.count=0;
???H.sizeindex++;?//?增大存儲容量
???m=hashsize[H.sizeindex];
???p=(ElemType*)realloc(H.elemm*sizeof(ElemType));
???if(!p)
?????exit(OVERFLOW);?//?存儲分配失敗
???H.elem=p;
???for(i=0;i?????H.elem[i].key=NULLKEY;?//?未填記錄的標(biāo)志(初始化)
???for(p=elem;p?????InsertHash(H*p);
}

Status?InsertHash(HashTable?&HElemType?e)//?查找不成功時插入數(shù)據(jù)元素e到開放定址哈希表H中,并返回OK;
{?int?cp;
???c=0;
???if(SearchHash(He.keypc))?//?表中已有與e有相同關(guān)鍵字的元素
?????return?DUPLICATE;
???else?if(c???{?//?插入e
?????H.elem[p]=e;
?????++H.count;
?????return?OK;
???}
???else
?????RecreateHashTable(H);?//?重建哈希表
???return?ERROR;
}

void?TraverseHash(HashTable?Hvoid(*Vi)(intElemType))//?按哈希地址的順序遍歷哈希表
{?
???printf(“哈希地址0~%d\n“m-1);

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件????????901??2009-03-04?17:30??哈希表設(shè)計.plg

?????文件??????12878??2009-03-04?17:30??Debug\main.obj

?????文件??????41984??2009-03-04?17:30??Debug\vc60.idb

?????文件??????53248??2008-11-20?12:25??Debug\vc60.pdb

?????文件?????184388??2009-03-04?17:30??Debug\哈希表設(shè)計.exe

?????文件?????190624??2009-03-04?17:30??Debug\哈希表設(shè)計.ilk

?????文件?????248132??2008-11-20?12:25??Debug\哈希表設(shè)計.pch

?????文件?????451584??2008-11-20?12:25??Debug\哈希表設(shè)計.pdb

?????文件???????5193??2008-11-19?22:06??main.cpp

?????文件???????4326??2008-11-19?12:37??哈希表設(shè)計.dsp

?????文件????????528??2008-11-19?12:36??哈希表設(shè)計.dsw

?????文件??????41984??2009-03-04?17:30??哈希表設(shè)計.ncb

?????文件??????48640??2009-03-04?17:30??哈希表設(shè)計.opt

?????目錄??????????0??2008-11-20?12:25??Debug

-----------?---------??----------?-----??----

??????????????1284410????????????????????14


評論

共有 條評論

相關(guān)資源