- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计散列表实现话号码查找系统数据结构课程设计
河南城建学院 课程设计报告书 专 业:计算机科学与技术 课程设计名称:《数据结构课程设计》 题 目:设计散列表实现电话号码查找系统 班 级: 学 号: 姓 名: 同 组 人 员: 无 指 导 老 师: 完 成 时 间: 摘要 目录 目录 . 第一章 开发环境和开发工具 1 1.1 C++语言简介 .1 1.2 开发背景 .1 1.3 开发环境 .1 第二章 算法思想 2 2.1 系统需求分析 2 2.2 系统总体设计 2 2.2.1 系统设计目标 2 2.2.2 开发设计思想 .3 2.2.3 系统功能模块设计 .3 2.3 算法思想描述 6 第三章 算法实现 7 3.1 数据结构 7 3.2 程序模块 7 3.3 各模块之间的调用关系 10 3.4 源程序代码 11 第四章 测试与分析 18 4.1 测试数据选择 18 4.2 测试结果分析 18 总 结 20 心得体会 20 参考文献 22 开发环境和开发工具 C ++语言简介 在C的基础上,一九八三年又由贝尔实验室的Bjarne Strou-strup推出了C++。 C++进一步扩充和完善了C语言,成为一种面向 对象的程序设计语言。C++目前流行的必威体育精装版版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2.0。C++提出了一些更为深入的概念,它所支持的这些的概念容易将问题空间直接地映射到程序空间,为程序员提供了一种与程序设计不同的思维方式和编程方法。因而也增加了整个语言的复杂性,掌握起来有一定难度环境的信息技术极大地扩展了全人类教育的时空界限,空前地提高了人们学习的兴趣、效率和主动性,已经成为开发人类能力的创造性工具。在计算机科学中,《数据结构》不仅是一般应用程序设计的基础,而且也是操作系统、数据库系统、网络系统设计及其它大型计算机应用工程重要的实施基础。采用法解决冲突;查找并显示给定电话号码的记录; 电话管理系统要整个系统的主要分为两大模块如功能模块图2-1可以清楚的看到, 录入模块和查询模块。 录入模块可根据系统提示的信息填写信,,填完相应的信息,可按回车储存。以姓 名和电话号码为关键字,分别用Hash函数运算出一个相对应的值,把这个值作为结点 的存储地址,分别存入姓名散列表和电话号码散列表的对应位置。 查询模块分为两部分,姓名查询和号码查询,姓名查询可有一个姓名查到多个记录 号码查询是一一映射。查找时,通过所要寻找的关键字用同样的Hash函数计算地址,判 断存的内容是否跟关键字是否一样,若一样则记录找到则可找到你要查找的内容。否则无此记录。 哈希表散列方法:电话散列计算key值是从第三个数字开始相加得到一个总和,用总和除以20取余数得到其散列地址。同样对于姓名的存储利用姓名的ASSIC值对应相加. 。 2.3 算法思想描述 1、建立节点将名字地址电话放入数组中,并且定义所输入姓名电话地址的输入类型为字符型。 struct node { char name[8],address[20]; char num[11]; node * next; }; unsigned int key; unsigned int key2; 2、定义哈希表,定义关键字key的取定方法,电话散列的关键字key1+=(int)num[i];key1=key1%20 ,获取电话的关键字,堆入散列表。 同理对于姓名的关键选取采用姓名英文字母的ASSIC 码之和,key2+=(int)num;key2=key2%20, 获取名字的关键字。 不管是以电话为关键字还是以名字为关键字都避免不了冲突的产生,程序对于冲突的处理采用了线性探测解决,算法为: for(j=0;j20;j++) { key=(key+j)%20; if(phone[key]-name==) break; } return(key); 每次冲突以后通过j的自增增加1,一次寻找散列表中未被占用的位置,直到找到位置。 3、自定义函数,其中自定义的函数包括 输入apend函数 新建create函数,包括姓名输入和电话输入 显示查询信息的list函数 查找的find 函数 删除信息的delete函数 保存信息的save 函数 最后定义主菜单函数menu, 最后是主函数然后由主函数void main( )根据用户输入的要求调用各个函数,主菜单函数每次均被调用。 第三章 算法实现 3.1 数据结构 struct node //建节点 { char
文档评论(0)