专业课程设计试验报告哈希表的设计和实现.docVIP

专业课程设计试验报告哈希表的设计和实现.doc

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

数据构造课程设计

题目哈希表设计与实现

作者

院系信息工程学院

专业信息管理与信息系统

学号

指引教师张慧

答辩时间12月18日

目录

TOC\o1-3\h\z\u数据构造课程设计 0

1系统需求分析 2

1.1顾客需求分析 3

1.2功能需求分析 3

1.3数据需求分析 3

1.4小结 4

2系统设计 4

2.1设计内容及规定 4

2.2总体设计思路 4

2.3程序详细设计流程图 5

2.31以姓名为核心字Hash()函数流程图 5

2.32添加结点信息流程图: 7

2.33按姓名查找流程图: 7

2.34按号码查找流程图 8

2.35主程序流程图 9

2.4详细设计编码 11

2.41建立节点 11

2.42对哈希函数定义 11

2.43哈希查找 12

2.44主函数 12

3系统测试 13

3.1上机调试 13

3.2调试成果与分析 14

4总结 18

5附录 18

1系统需求分析

在信息化时代今天,计算机技术已经是发展到一种很可观地步了,特别是面向窗口操作系统浮现,使得程序设计更加容易了。在过去计算机内存容量小,CPU计算速度慢,关于程序设计中数据构造也因而提出来诸多关于解决这方面问题。哈希表就是其中之一,哈希表是一种由核心字与值构成特殊一种数据构造。它浮现重要是为理解决在构造中查找记录时需要进行一系列和核心字比较,这一类查找办法是建立在“比较”基本上,在顺序等查找中,查找效率是依赖于查找过程中所比较次数。

抱负状况是但愿不通过任何比较一次存取便能得到所查记录,那就必要在记录存储位置和它核心字之间建立一种拟定相应关系,使得每个核心字和构造中一种唯一存储位置相相应。因而在查找时只要依照这个相应关系找到给定值像。若构造中存在核心字和该值相等记录,则所要查找数就必然就是这个所查找到记录。

哈希函数是建立哈希表一种重要成员,它构造办法分为如下几种:

直接定址法、数字分析法、平方取中法、折叠法、除留余数法、随机数法。

本程序中重要用是除余取留法,除留取余法重要是取核心字被某个不不不大于哈希表表长m数p出后所得余数为哈希地址即:H(key)=keyMODp,p=m,这是一种最简朴,也是一种最惯用构造函数办法,它不但可以对核心字直接取模,也可在折叠、平方中档运算之后取模。

在哈希表建立中,很容易浮现同义词,这些同义词浮现也导致了建立哈希表时冲突浮现,如果不解决这些冲突那么建立好哈希表与预料哈希表不同。关于解决冲突办法重要有:开放定址法、再哈希法、链地址法。本程序中重要用就是链地址法莱解决冲突。

1.1顾客需求分析

设计一种程序可以使用哈希表实现电话号码查询系统。该系统可以从键盘输入各记录,分别以电话号码和顾客名为核心字建立哈希表,可以从输入记录中查找并显示给定顾客记录,最后并且可以进行清除记录和退出功能。

1.2功能需求分析

(1)设计一种结点使该结点涉及电话号码、顾客名、地址。

(2)运用顾客名和电话号码为核心字建立哈希表,哈希函数用除留余数法构照。

(3)运用链表法解决冲突问题。

(4)查找并显示给定顾客名,地址,电话号码记录。

(5)显示哈希表中给定顾客记录。

(6)当完毕操作后,可以退出系统。

1.3数据需求分析

由问题分析知,本设计重要规定分别以电话号码和顾客名为核心字建立哈希表,并实现查找功能。因此本设计核心问题是如何解决散列问题,亦即设计一种良好哈希表。由于结点个数无法确认,并且如果采用线性探测法散列算法,删除结点会引起“信息丢失”问题。因此采用链地址法散列算法。采用链地址法,当浮现同义词冲突时,使用链表构造把同义词链接在一起,即同义词存储地址不是散列表中其她空地址。

一方面,解决是定义链表结点,在链地址法中,每个结点相应一种链表结点,它由三个域构成,而由于该程序需要分别用电话号码和顾客名为核心字建立哈希表,因此该链表结点它是由四个域构成.name[8]、num[11]和address[20]都是char浮点型,输入输出都只能是浮点型。

采用链地址法,其中所有同义词构成一种单链表,再由一种表头结点指向这个单链表第一种结点。这些表头结点构成一种一维数组,即哈希表。数组元素下标相应由散列函数求出散列地址。

1.4小结

通过以上需求分析,懂得了设计一种哈希表目和可以“实现什么功能

文档评论(0)

185****6315 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档