c++哈希查找设计报告.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c++哈希查找设计报告.doc

实验五 hash查找 题目:编制一个利用hash表进行查找的程序 班级: 计科0906 姓名: 马飞扬 学号: 200948140622 完成日期: - - 一:需求分析 1:利用hash函数建立哈希表,并采用链地址法处理冲突。然后进行查找操作验证算法,表长由客户输入。 二:概要设计 1:在hash函数中p值采用了表长值,虽然会增加冲突发生的可能性,但能够保证数据较均匀的分布于整个hash表中,在大量数据的情况下不至于浪费存储空间。 2:采用链地址法处理冲突虽然造成基于指针的操作较复杂,但能够提高程序效率,降低时间复杂度。 3:若要由客户来决定表长,则必须用到动态开辟的知识,即动态开辟存储空间。 三:详细设计 #includeiostream using namespace std; struct hashlian//定义hash表的结点存储结构 { int key;//存储关键字 hashlian*next;//地址指针 }; void main() { int m=0;// int i=0;// int j=0;//辅助变量 int weizhi=0;//记录元素对应的结点位置 int find=0;//记录待查找的元素 int *data;//存储要操作的数据 hashlian*p1=NULL;// hashlian*p2=NULL;//指向结点的辅助指针 hashlian*hash=NULL;// cout输入最大数据个数:; cinm;//输入hash表长 hash=new hashlian[m];//存储hash表 data=new int[m];//动态开辟存储空间 for(int ii=0;iim;ii++)//对hash表进行初始化 { hash[ii].key=-1; hash[ii].next=NULL; } cout输入数据(退出输入-1)!endl;// cout第一个:;cindata[i];// while(data[i]!=-1)//循环输入待操作的数据 { if(i=m-1) { i++; cout第i+1个:; cindata[i]; } else { cout越界了!endl; } } j=i; for(i=0;ij;i++)//链地址法处理冲突建立hash表 { weizhi=data[i]%m;//定位存储位置 if(hash[weizhi].key=-1)//若当前无元素直接存储 { hash[weizhi].key=data[i]; } else { p1=hash[weizhi]; p2=p1-next; while(p2!=NULL)//控制p2始终指向最后一个结点的下一位 { p1=p2; p2=p2-next; } p2=new hashlian; p2-key=data[i];//动态申请空间进行存储后再插入 p2-next=NULL; p1-next=p2; } } cout输入查找的数据:;cinfind; weizhi=find%m;//定位待查找数据的应存储位置 p1=hash[weizhi]; while(p1!=NULL)//从第一个位置开始循环查找直到最后一个结点的下一位 { if(p1-key==find) { cout查找成功!endl; break; } p1=p1-next; } if(p1==NULL)//全部查找后仍没有则查找失败 { cout查找失败!endl; } } 四:调试分析 在本次试验中主要是在选择hash函数中的p值时多考虑了一些因素,然后在基于链操作时遇到了一些小麻烦,其它的倒很简单。由于时间比较紧迫,所以仅仅实现了查找操作,对于插入和删除,有时间还要练一下。 五:运行结果 六:实验环境 1:window xp 系统下 2:visual c++ 6.0 编程环境 七:实验体会 通过本次试验掌握了hash查找算法,但由于时间比较仓促,所以除此之外收获并不大,有时间的话这方面的内容还要在练一下。

文档评论(0)

dmz158 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档