收藏 分享(赏)

《散列表的设计与实现》课程设计报告 - search readpudncom.doc

上传人:dzzj200808 文档编号:2605436 上传时间:2018-09-23 格式:DOC 页数:5 大小:383.50KB
下载 相关 举报
《散列表的设计与实现》课程设计报告 - search readpudncom.doc_第1页
第1页 / 共5页
《散列表的设计与实现》课程设计报告 - search readpudncom.doc_第2页
第2页 / 共5页
《散列表的设计与实现》课程设计报告 - search readpudncom.doc_第3页
第3页 / 共5页
《散列表的设计与实现》课程设计报告 - search readpudncom.doc_第4页
第4页 / 共5页
《散列表的设计与实现》课程设计报告 - search readpudncom.doc_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

1、散列表的设计与实现课程设计报告姓名:陈燕平 学号:20052446 完成日期: (一) 问题描述及分析:(1) 设每个记录有下列数据项:电话号码、用户名、地址;(2) 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表;(3) 采用双散列法解决冲突;(4) 查找并显示给定电话号码的记录;(5) 查找并显示给定用户名的记录 (二) 功能模块及数据结构描述:录入子系统 查询子系统姓名 地址 号码姓名查找 号码查询电话号码管理系统功能模块图 2-1电话管理系统要整个系统的主要分为两大模块如功能模块图 2-1 可以清楚的看到,录入模块和查询模块。录入模块可根据系统提示的信息填写信, ,填完相应

2、的信息,可按回车储存。以姓名和电话号码为关键字,分别用 Hash 函数运算出一个相对应的值,把这个值作为结点的存储地址,分别存入姓名散列表和电话号码散列表的对应位置。查询模块分为两部分,姓名查询和号码查询,姓名查询可有一个姓名查到多个记录号码查询是一一映射。查找时,通过所要寻找的关键字用同样的 Hash 函数计算地址,判断存的内容是否跟关键字是否一样,若一样则记录找到则可找到你要查找的内容。否则无此记录。(三) 主要算法流程描述:号码的查找,首先获得关键字 key,用 Hash1(key)计算出地址,比较对应 num_Htd号码散列表的值是否和关键字相等,若相等则将该存储单元的所有内容输出,返

3、回。若不相等,则用探查序列的计算散列地址,则可找到所找记录。姓名的查找,首先获得关键字 key,用 Hash1(key)计算出地址,比较 Hah2(key)的值是否和关键字相等,若相等则将该存储单元的所有内容输出,输出完,继续用探查序列计算出散列地址,依依和关键字比较,输入已关键字相同的所有记录。过程几乎与号码查询是一样的。如图 3-1。开始进入录入系统获得关键字 key用 Hash1(key)计算地址比较 nam_Ht(d)的值是否和关键字相等输出记录用探查序列d+i*hash2(key)计算散列地址结束比较 nam_Ht(d)的值是否和关键字相等未找到记录输入流程图 3-1号码存储的散列函

4、数 Hash1(key),算出散列地址,若再碰到冲突。则用探查序列再计算散列地址。探查序列为 d(i)=(d+ih2(key)%m (1=I=m-1)。直到把记录存进去;姓名的存储与号码是一样的。如图 3-2开始获得号码或姓名计算散列地址 d=hash1(key)判断 nam_Htdh是否有值使用探查序列 d+i*H2(key)寻找散列地址记录存储成功结束判断 nam_Htdh是否有值i+散列表已满录入流程图 3-2(四) 使用说明:录入说明: 进入系统按提示操作填写相关信息如图 4-1:图 4-1注意在对号码录入是应注意一下如表 4-2 及图 4-3 几点:号码的输入表 4-2号码的无效类

5、图 4-3查询过程:输入你要查询的信息,可得到你要的结果:如下步骤:从主界面进入到查询系统,如图 4-4;图 4-4在查询系统中,选择你要的查询方式。如姓名查询,可见如图 4-5 界面。无效类 输出预期结果用例 输入非数字第一位和第二位不是 1 和 3号码不超过11 位的输出无效输出无效输出无效 139sndfgkaw 1248790769803989808023238847(五)调试分析说明:哈希函数没有设好,使用了数组各个字符相加,在运行时算的散列地址出现了负值。而使得记录无法正常的存储到散列表中。后来使用了第一位和第三位之和可是散列地址始终为正值在探查序列的查找过程中,循环条件没有设好,

6、尤其是注意对字符串的比较strcmp 函数返回值,程序成为死循环。对文件的操作过程中碰到很多问题,在打开文件的过程中,刚开始使用了是录入一个记录就读进文件,浪费了很多时间,后来采用程序调用前把文件的内容读出到散列表中。在程序运行结束是,把记录读入文件,减少了大量的时间。 参考文献:廖荣贵、许正宪 数据结构与算法 2004-11-1 出版 327381 页Willliam J.Collins 数据结构与 STL 2004-4-1 出版 408439 页 郑莉 董渊 张瑞丰 c+语言程序设计 2005-9 出版 375 页谭浩强 张基温 唐永炎 c 语言程序设计 1982 年出版 293313 页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报