?? hashlist.cpp
字號:
#include "hashList.h"
HashList_T::HashList_T(int numbers)
{
m_numbers=numbers;
m_name_ptr=new vector<string>[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<s.size();i++)
{
if(s[i]<'a'||s[i]>'z')
return false;
}
return true;
}
void HashList_T::show(bool lhs)const
{
if(lhs)
cout<<"查找成功"<<endl;
else
cout<<"查找失敗"<<endl;
}
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=0,numbers;
string name;
cout<<"輸入要輸入的人名總數:"<<endl;
cin>>numbers;
while(i<numbers)
{
if(1)
{
string s;
cout<<"輸入人名:"<<endl;
cin>>s;
name=s;
}
bool result=isLegal(name);
while(!result)
{
if(1)
{
string s;
cout<<"輸入非法,輸入人名:"<<endl;
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<<"輸入查找人名"<<endl;
cin>>s;
name=s;
}
bool result=isLegal(name);
while(!result)
{
if(1)
{
string s;
cout<<"輸入非法,再次輸入人名"<<endl;
cin>>s;
name=s;
result=isLegal(name);
}
}
findName(name);
cout<<"繼續?yes--1.no--0"<<endl;
cin>>i;
}
}
void HashList_T::findName(string&s)
{
int i=s.size()%m_numbers;
bool result=isExistence(i,s);
show(result);
cout<<endl;
}
bool HashList_T::isExistence(int i,string&s)
{
if(m_name_ptr[i].empty())
return false;
vector<string>::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;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -