版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验名称哈希表的查找操作实验学时2实验性质必做/选做□必做2.掌握哈希表的构造方法及其计算机的表示与实现。3.掌握哈希表查找算法的实现。1.以开放地址法中的线性探测再散列法处理冲突,实现哈希表的建立、查找和插入操作(验证性内容)。2.以链地址法,也叫拉链法处理冲突,实现哈希表的建立,查找和插入操作(设计性3.用哈希查找法实现班级信息的查找(应用性设计内容)。PC机(单机)1.哈希函数、哈希地址、哈希表和冲突的概念。2.哈希函数的构造方法,特别是除留余数法。3.用开放地址法中的线性探测再散列法和链地址法解决冲突的原理。4.在哈希函数和解决冲突的方法确定的情况下,哈希表的构造方法。(1)设哈希表长为20,用除留余数法构造一个哈希函数。(2)输入哈希表中记录的个数n(n<=20)和各记录的关键字值,然后以开放地址法中的(3)输入一个待查找记录的关键字key,完成开放地址哈希表的查找操作,如果查找成哈希表查找是一各基于尽可能不通过比较操作而直接得到记录的存储位置的相法而提冲突的方法,将一组关键字映象到一个有限的、地址连续的地址集(区间)上,并以关键字如果用开放地址法处理冲突而构造的查找表称为“开放地址哈希表”;如果用链地址法处理privateComparable待查找的哈希表类描述如下:publicHashTable(intmaxSize){}(2)开放地址哈希表查找的基本思想:将待查找记录中的关键字值key为自变量,通过哈希函数h,计算出h(key)哈希地址,再将哈希表中对应位置上记录关键字值与key进行比(3)开放地址哈希表插入操作的基本思想:先调用哈希表查找函数查找以key为关键数h,计算出h(key)哈希地址,再去考察哈希表中对应存储位置是否为空,如果为空则将该待(1)开放地址哈希表的查找操作算法//在开放地址哈希表中查找关键字值为key的记录,若哈希表满则返回null,否则返回关键字为key或为0的记录结点while(table[i].getKey().compareTo(O)!=0)&&(table[i].getKey().compareTo(key)j++;i=(i+j)%20;//用线性探测再散列法求得下一探测地址}//i指示查找到的记录在表中的存储位置或指示插入位置if(j>=table.length){/如果表已经为满}}(2)开放地址哈希表的插入操作算法//查找不成功且表不满时,插入关键字值为key的记录到开放地址哈希表中System.out.println("此关键字记录已存在或哈希表已满");//记录结点类publicObjectgetElement(){publicvoidsetElement(Objectele}publicvoidsetKey(Comparablekey){}}//关键字类型类classKeyTypeimplemprivateintkey;//关键字publicKeyType(){}publicKeyType(intkey){}publicvoidsetKey(intkeypublicStringtoString(){//覆盖toString()方法return(thisVal<anotherVal?-1:(thisVal==anotherVal?0:1));}//采用开放地址法的哈希表类privateRecordNode[]tabl//哈希表的对象数组//构造指定大小的哈希表this.table=newRecordN}publicinthash(intkey){//除留余法数哈希函数//开放地址哈希表的查找publicRecordNodehashSearchintj=0;while((table[i].getKey().compareTo(0)//该位置中不为空并且关键字与key不相等j++;i=(i+j)%20;//用线性探测再散列法求得下一探测地址}//i指示查找到的记录在表中的存储位置或指示插入位置if(j>=table.length){//如果表已经为满System.out.println("哈希表已满");}//开放地址哈希表的插入publicvoidhashInsert(inif(p.getKey().compareSystem.out.println("此关键字记录已存在或哈希表已满");}//哈希表的输出for(inti=0;i<System.out.print(table[i].getKey}//测试类//建立待查找的哈希表System.out.print("请输入待查找的关键字的个数:");System.out.print("请输入查找表中的关键字序列:");for(inti=0;i<n;i++){//输入关键字序列,并插入哈希表中publicstaticvoidmain(String[]arSystem.out.print("请输入待查找的关键字:");intkey=sc.nextInif((p.getKey()).compareTo请输入待查找的关键字的个数:8请输入查我表中的关键字序列:25182119203858创建的哈希表为:备注:以下设计性和应用性实验内容学生可根据自己的掌握程度或兴趣自行选择其一(2)输入哈希表中记录的个数12和各记录的关键字序列(19,(3)输入一个待查找记录的关键字key,完成链地址哈希表的查找操作,如果查找成功,则函数返回查找到的记录在哈希表中的位置值,否则给出查找失败的提示信息。链地址法解决冲突的方法是将所有哈希地址相同而关键字值不相同的记录存储在同一线性链表中。对于已知的关键字序列(19,14,23,01,68,20,84,27,55,11,10,79),如果按哈希函数h(key)=key%13和链地址法处理冲突所构造的哈希表如下图8-2所示:0023456789八AA图8-2链地址法处理冲突的哈希表}//在哈希表中查找指定对象,若查找成功,返回结点;否则返回nul
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年莱州市中医医院医护人员招聘笔试题库及答案详解
- 2025年深圳市光明医院医护人员招聘笔试题库及答案详解
- 2025年云南省林业中西医结合医院医护人员招聘笔试题库及答案详解
- 2026年澧县第二人民医院医护人员招聘考试参考题库附答案详解
- 2025年曲靖皮肤病专科医院医护人员招聘笔试题库及答案详解
- 2025年铜川矿务局崔家沟煤矿职工医院医护人员招聘笔试题库及答案详解
- 2026年广州市白云区人和华侨医院医护人员招聘考试模拟试题及答案详解
- 2025年鲲鹏城市建设投资集团有限公司招聘真题
- 2025年北京市朝阳区双龙医院医护人员招聘笔试题库及答案详解
- 2026年中国建筑四局职工医院医护人员招聘考试模拟试题及答案详解
- 航空摄影测量与遥感服务作业指导书
- CJJT147-2010 城镇燃气管道非开挖修复更新工程技术规程
- 2024年贵安新区产业发展控股集团有限公司招聘笔试参考题库含答案解析
- 介入术后并发症的预防及处理
- 灭火器配置计算(带公式)
- 第七章新能源材料课件
- 打造成为九段员工内部培训
- GB/T 18276-2017汽车动力性台架试验方法和评价指标
- GB/T 14187-2008包装容器纸桶
- GB/T 1404.2-2008塑料粉状酚醛模塑料第2部分:试样制备和性能测定
- 机械排痰仪课件
评论
0/150
提交评论