实验16:哈希查找实验报告参考模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
深圳大学实验报告
课程名称:数据结构实验与课程设计
实验项目名称:哈希查找实验
学院:计算机与软件学院
专业:软件工程
指导教师:杨芳
报告人:薛锡增学号:2013150368 班级: 3 实验时间:2014-12-11
实验报告提交时间:2014/12/12
教务处制
一、实验目的
1、掌握哈希查找算法的基本思想
2、掌握哈希查找表的构造方法
3、掌握链表法解决冲突的方法
4、掌握哈希查找的时间性能
二、实验要求
1、熟悉C++语言编程
2、了解哈希查找的原理
三、实验内容
1、问题描述
采用散列表方式,对关键字进行查找。
2、查找算法
⑴、利用哈希函数(除留余数法,哈希表长为5)及记录的关键字计算出记录的存储地址
⑵、直接到指定地址进行查找
⑶、如果查找不成功,则采用(表头插入)链地址法,将记录插入到指定地址所在链表的
头上。
3、输入
⑴、第一行:测试次数。
⑵、每个样本分2行:
第一行:第一个数字n表示样本数目,其后跟n个样本;
第二行:查找的关键字的值。
4、输出
查找是否成功(1—表示成功,0表示不成功),所在位置(从0开始),查找次数。
5、输入样本
2
5 2 4 9 5 7
4
6 2 6 8 4 9 1
7
6、输出样本
1 4 2
0 2 2
四、程序清单
#include<iostream>
using namespace std;
struct node
{
int data;
node* next;
node(){next=NULL;}
};
const int m=11;
int main()
{
node h[15];
int n,i,s;
node* p;
//freopen("cin1.txt","r",stdin);
cin>>n;
for(i=0;i<n;i++)
{
cin>>s;
p=new node();
p->data=s;
p->next=h[s%11].next;
h[s%11].next=p;
}
int t;
cin>>t;
while(t--)
{
cin>>s;
int sum=1;
p=h[s%11].next;
while(p)
{
if(s==p->data){
cout<<s%11<<" "<<sum<<endl;
break;
}
sum++;
p=p->next;
}
if(!p)
{
cout<<"error"<<endl;
p=new node();
p->data=s;
p->next=h[s%11].next;
h[s%11].next=p;
}
}
return0;
}
五、程序运行时截图
流程图:
对逐个输入的数据进行除11取余,放到数组相应的位置上
输入数据后对其除11取余到数组相应的位置上进行查找,
找到就输出数组下标、数组上的第几个结点
六、实验心得与体会(实验中遇到的问题及解决方案,或写点感想)
哈希查找还没交,对概念不是很懂,在处理问题上也出现不少小细节,不过最后还是做出来了。
2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。
友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。