資源簡介
1.1 針對某個集體中的人名設計一個哈希表,使得平均查找長度不超過R,完成相應的建立和查表程序. 1.2 人名為漢語拼音形式,最長不超過18個字符(如:莊雙雙 zhuangshuangshuang). 1.3 假設待填入哈希表的人名有30個,平均查找長度為2。哈希表用除留余數法構造,用偽隨機探測在散列法處理沖突。 1.4 在輸入人名過程中能自動識別非法輸入,并給與非法輸入的反饋信息要求重新輸入。

代碼片段和文件信息
#include?“hashList.h“
?HashList_T::HashList_T(int?numbers)
{
m_numbers=numbers;
m_name_ptr=new?vector[m_numbers];
}
HashList_T::~HashList_T(void)
{
delete?[]m_name_ptr;
}
bool?HashList_T::isLegal(string&s)
{
if(s.size()>18)
return?false;
for(int?i=0;i {
if(s[i]<‘a‘||s[i]>‘z‘)
return?false;
}
return?true;
}
void?HashList_T::show(bool?lhs)const
{
if(lhs)
cout<<“查找成功“< else
cout<<“查找失敗“< }
bool?HashList_T::isFull(int?i)const
{
if(m_name_ptr[i].size()==2)
return?true;
else
return?false;
}
int?HashList_T::getNumber(string&s)
{
int?i=s.size()%m_numbers;
bool?result=isFull(i);
if(!result)
return?i;
else
{
int?j;
if(m_numbers%2==0)
j=m_numbers-1;
else
j=m_numbers-2;
i=(i+j)%m_numbers;
result=isFull(i);
while(result)
{
i=(i+j)%m_numbers;
result=isFull(i);
}
return?i;
}
}
void?HashList_T::createHashList(void)
{
int?i=0numbers;
string?name;
cout<<“輸入要輸入的人名總數:“< cin>>numbers;
while(i {
if(1)
{
string?s;
???? cout<<“輸入人名:“< ????cin>>s;
name=s;
}
bool?result=isLegal(name);
while(!result)
{
if(1)
{
string?s;
????? cout<<“輸入非法輸入人名:“< ????cin>>s;
name=s;
}
result=isLegal(name);
}
int?j=getNumber(name);
m_name_ptr[j].push_back(name);
i++;
}
}
void?HashList_T::findName(void)
{
string?name;
int?i=1;
while(i>0)
{
if(1)
{
string?s;
????????cout<<“輸入查找人名“< ????????cin>>s;
name=s;
}
bool?result=isLegal(name);
while(!result)
{
if(1)
{
string?s;
????cout<<“輸入非法再次輸入人名“< ????cin>>s;
name=s;
result=isLegal(name);
}
}
findName(name);
cout<<“繼續?yes--1.no--0“< cin>>i;
}
}
void?HashList_T::findName(string&s)
{
int?i=s.size()%m_numbers;
bool?result=isExistence(is);
show(result);
cout<
}
bool?HashList_T::isExistence(int?istring&s)
{
if(m_name_ptr[i].empty())
return?false;
?vector::iterator?p;
?int?j;
?if(m_numbers%2==0)
?j=m_numbers-1;
?else
?j=m_numbers-2;
?while(!m_name_ptr[i].empty())
?{
???p=m_name_ptr[i].begin();
???? while(p!=m_name_ptr[i].end())
{
if(*p==s)
return?true;
p++;
}
i=(i+j)%m_numbers;
?}
?return?false;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6672??2008-08-20?11:21??哈希表源碼\Debug\BuildLog.htm
?????文件?????540632??2008-08-20?11:21??哈希表源碼\Debug\hashList.obj
?????文件?????????67??2008-08-20?11:21??哈希表源碼\Debug\mt.dep
?????文件??????33596??2008-08-14?16:34??哈希表源碼\Debug\test.obj
?????文件?????232448??2008-08-20?11:21??哈希表源碼\Debug\vc80.idb
?????文件?????176128??2008-08-20?11:21??哈希表源碼\Debug\vc80.pdb
?????文件?????659456??2008-08-20?11:21??哈希表源碼\Debug\哈希表.exe
?????文件????????146??2008-08-14?16:34??哈希表源碼\Debug\哈希表.exe.em
?????文件????????212??2008-08-14?16:34??哈希表源碼\Debug\哈希表.exe.em
?????文件????????145??2008-08-20?11:21??哈希表源碼\Debug\哈希表.exe.intermediate.manifest
?????文件????1776000??2008-08-20?11:21??哈希表源碼\Debug\哈希表.ilk
?????文件????3042304??2008-08-20?11:21??哈希表源碼\Debug\哈希表.pdb
?????文件???????2685??2008-08-20?13:50??哈希表源碼\hashList.cpp
?????文件????????992??2007-07-10?14:18??哈希表源碼\hashList.h
?????文件????????113??2007-07-09?17:10??哈希表源碼\test.cpp
?????文件?????????82??2007-07-08?22:21??哈希表源碼\哈希表.dep
?????文件???????4404??2007-07-09?18:20??哈希表源碼\哈希表.dsp
?????文件????????537??2007-07-08?22:21??哈希表源碼\哈希表.dsw
?????文件???????4351??2007-07-09?18:20??哈希表源碼\哈希表.mak
?????文件??????53760??2008-04-02?15:31??哈希表源碼\哈希表.opt
?????文件???????3425??2007-07-12?20:55??哈希表源碼\哈希表.plg
?????文件????????882??2008-08-14?16:33??哈希表源碼\哈希表.sln
????..A..H.?????10752??2008-08-20?16:04??哈希表源碼\哈希表.suo
?????文件???????5566??2008-08-14?16:33??哈希表源碼\哈希表.vcproj
?????文件???????1411??2008-08-20?16:04??哈希表源碼\哈希表.vcproj.CPLH-BJ.siliang.user
?????文件??????97792??2007-07-11?16:19??哈希表課程設計報告.doc
?????目錄??????????0??2008-08-20?11:21??哈希表源碼\Debug
?????目錄??????????0??2008-08-20?13:50??哈希表源碼
?????文件????2149376??2008-08-20?16:04??哈希表源碼\哈希表.ncb
-----------?---------??----------?-----??----
............此處省略2個文件信息
- 上一篇:平面3RRR并聯機器人結構
- 下一篇:rsa算法流程圖
評論
共有 條評論