哈希表的查找
华 北 电 力 大 学 实 验 报 告
华北电力大学
实验名称 哈希图的
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
与查找
课程名称 算法与数据结构实验
专业班级: 学生姓名:
学 号: 成 绩:
指导教师:
实验日期:
第 页 共 页
华 北 电 力 大 学 实 验 报 告
一、实验目的及要求
设计哈希表实现电话号码查询系统:
1)设每个记录有如下数据项:电话号码、用户名、地址;
2)从键盘输入各个记录,以电话号码为关键字建立哈希表,哈希表的长度为8;
3)用链地址法解觉冲突;
4)显示建立好的哈希表,并且对其进行查找。
二、所用仪器、设备
VC++ 6.0环境
三、实验说明
1.采用除留余数法进行哈希表的散列,即以电话号码作为主关键字,将电话号码的
11位相加,按照模7取余;
2.解决冲突用链地址法。
四、实验源代码
#include
#include
using namespace std;
#define M 8
class Student
{
char name[10];
char address[20];
public:
char tel[12];
void getname()
{
cout<<"用户名:";
cin>>name;
}
void gettel()
{
cout<<"电话(请输入8位或11位电话号码):";
cin>>tel;
while(strlen(tel)!=11&&strlen(tel)!=8)
{
cout<<"请输入正确号码:";
cin>>tel;
};
第 页 共 页
华 北 电 力 大 学 实 验 报 告
}
void getaddress()
{
cout<<"地址:";
cin>>address;
}
void print()
{
cout<<"用户名:"<tel;
int digit=0;
while(*p!='\0')
{
if((*p>='0')&&(*p<='9'))
digit+=(*p-'0');
p++;
}
digit=digit%7;
jd *t=new jd;
strcpy(t->hm,st->tel);
t->ind=st;
t->next=g[digit];
g[digit]=t;
}
void outlist(jd *g[]) // 输出哈希表
{
cout<<"输出哈希表:"<hm;
q=q->next;
}
cout<='0')&&(*p<='9'))
digit+=(*p-'0');
p++;
}
digit=digit%7;
if(g[digit]==NULL)
cout<<"查找失败"<hm,a)==0)
break;
q=q->next;
}
if(q!=NULL)
{
cout<<"查找成功!"<ind->print();
}
else
cout<<"查找失败!"<getname();
s->gettel();
s->getaddress();
inlist(g,s);
num++;
cout<<"继续输入吗(Y/N)?";
cin>>ch;
} while(ch=='Y'||ch=='y');
outlist(g);
{
cout<<"请输入要查找的号码:";
cin>>b;
serlist(g,b);
}
}
五、实验结果与数据处理
第 页 共 页
华 北 电 力 大 学 实 验 报 告
六、讨论与结论
本程序的功能相较于其他辨认的稍微少点,且开始查找后也不能重新添加,但实现了基本的存储查找,让我将学到的东西灵活的应用了出来,对数据结构这门课程也有了更深的了解,也希望以后能更加努力的学。
第 页 共 页