专业课程设计试验报告哈希表的设计和实现.doc
《专业课程设计试验报告哈希表的设计和实现.doc》由会员分享,可在线阅读,更多相关《专业课程设计试验报告哈希表的设计和实现.doc(30页珍藏版)》请在咨信网上搜索。
1、数据构造课程设计题 目 哈希表设计与实现 作 者 院 系 信息工程学院 专 业 信息管理与信息系统 学 号 指引教师 张 慧 答辩时间 12月18日 目录数据构造课程设计01系统需求分析21.1顾客需求分析31.2功能需求分析31.3数据需求分析31.4 小结42系统设计42.1设计内容及规定42.2总体设计思路42.3程序详细设计流程图52.31以姓名为核心字Hash()函数流程图52.32添加结点信息流程图:72.33按姓名查找流程图:72.34按号码查找流程图82.35主程序流程图92.4详细设计编码112.41建立节点112.42对哈希函数定义112.43哈希查找122.44主函数12
2、3系统测试133.1上机调试133.2调试成果与分析144总结185附录181系统需求分析在信息化时代今天,计算机技术已经是发展到一种很可观地步了,特别是面向窗口操作系统浮现,使得程序设计更加容易了。在过去计算机内存容量小,CPU计算速度慢,关于程序设计中数据构造也因而提出来诸多关于解决这方面问题。哈希表就是其中之一,哈希表是一种由核心字与值构成特殊一种数据构造。它浮现重要是为理解决在构造中查找记录时需要进行一系列和核心字比较,这一类查找办法是建立在“比较”基本上,在顺序等查找中,查找效率是依赖于查找过程中所比较次数。抱负状况是但愿不通过任何比较一次存取便能得到所查记录,那就必要在记录存储位置
3、和它核心字之间建立一种拟定相应关系,使得每个核心字和构造中一种唯一存储位置相相应。因而在查找时只要依照这个相应关系找到给定值像。若构造中存在核心字和该值相等记录,则所要查找数就必然就是这个所查找到记录。哈希函数是建立哈希表一种重要成员,它构造办法分为如下几种:直接定址法、数字分析法、平方取中法、折叠法、除留余数法、随机数法。本程序中重要用是除余取留法,除留取余法重要是取核心字被某个不不不大于哈希表表长m数p出后所得余数为哈希地址即:H(key)=key MOD p,pnextq 不为空调用hash()函数中新结点q指向phonekey-next开始2.34按号码查找流程图开始调用hash2()
4、函数中新结点q指向phonekey-nextq 不为空q=q-nextq不为空输出无记录输出相应记录结束2.35主程序流程图开 始Main ()初始化散列链表(1)并为其动态分派内存空间初始化散列链表(2)并为其动态分派内存空间Menu()主菜单输入选取选取1选选7查找号码find()查找顾客find2()输出成果输出成果选取2选取0选取3选取4选取5进行姓名散列list2()姓名散列成果添加记录 apend()退出系统return 0进行号码散列 list()清空creat();creat2()列表已清空号码散列成果结 束2.4详细设计编码2.41建立节点struct node /建节点 c
5、har name8,address20;/节点中要包括顾客名,顾客地址,电话号码以及指向下一种结点指针char num11;node * next;typedef node* pnode;/typedef可觉得一种已有数据类型声明各种别名,这里为该类型声明了两个指针typedef node* mingzi;node *phone;node *nam;node *a;2.42对哈希函数定义void hash(char num11) /以电话号码为核心字建立哈希函数 key=(int)num2;while(numi!=NULL) key+=(int)numi;i+; key=key%20;b) v
6、oid hash2(char name8) /以顾客名为核心字建立哈希函数 int i = 1;key2=(int)name0;while(namei!=NULL) key2+=(int)namei;i+; key2=key2%20;2.43哈希查找void find(char num11) /在以电话号码为核心字哈希表中查找顾客信息 hash(num);node *q=phonekey-next;while(q!= NULL) if(strcmp(num,q-num)=0) break;q=q-next; if(q) printf(%s_%s_%sn,q-name,q-address,q-n
7、um);else printf(无此记录n); b)、void find2(char name8) / 在以顾客名为核心字哈希表中查找顾客信息 hash2(name);node *q=namkey2-next;while(q!= NULL) if(strcmp(name,q-name)=0) break;q=q-next; if(q) printf(%s_%s_%sn,q-name,q-address,q-num);else printf(无此记录n);2.44主函数主函数本程序需要创立一种主菜单和一种主函数,主菜单便于顾客使用,主函数中,涉及所有功能相应数值,使之和主菜单相相应。*主函数界面
8、设计如下* 0添加记录 1查找记录 2姓名散列 3号码散列 4清空记录 5退出系统void menu() /菜单 system(color 2d);printf(*n);printf(ttt*欢迎使用*tttn);printf(n);printf(tttt 0.添加记录ttttn);printf(tttt 1.查找记录ttttn);printf(tttt 2.姓名散列ttttn);printf(tttt 3.号码散列ttttn);printf(tttt 4.清空记录ttttn);printf(tttt 5.退出系统ttttn); 3系统测试3.1上机调试1一方面键入0,添加结点信息,然后按1进
9、行查找,分别进行号码和姓名查找,最后可在主菜单中,选取号码散列和姓名散列,由此查看程序运营成果。2语法错误及修改:程序是分块写,调试时可以使用分步调试方式进行,以便能查找看程序是在哪出错了。本算法使用了链表构造和链地址法解决冲突问题,在以姓名为核心字哈希表中要注意涉及ASCLL码类型转换,要注意输出不能是“%d”,否则不能输出成果。编写程序时要多注意程序中各种指针使用,尚有各类变量定义,函数使用。这些问题均可以依照编译器警告提示,相应将其解决。3逻辑问题修改和调节:链表构造办法虽然以便了运营,但是增长了对算法过程结识难度。在本程序中每一种函数中都需要涉及到指针操作。因此需要仔细分析函数中指针指
10、向。在插入结点,查找结点时尤为突出。对于主菜单和主函数相应,一定要一致,这样才干保证运营时不会出错。4时间,空间性能分析:散列法本质上是一种通过核心字直接计算存储地址办法。在抱负状况下,散列函数可以把结点均匀地分布到散列表中,不发生冲突,则查找过程无需比较,其时间复杂度O(n)=1。但在实际使用过程中,为了将范畴广泛核心字映射到一组持续存储空间,往往会发生同义词冲突,这时在查找过程中就需要进行核心字比较。因而散列法查找性能取决于3个因素:散列函数、冲突解决办法和填充因子。采用链地址法,可以从主线上杜绝“二次汇集”发生,从而提高散列表均匀度,提高查找性能,但是也会“挥霍”一某些散列表空间。当散列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 专业课程 设计 试验报告 哈希表 实现
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。