课程设计4:查和排序.docxVIP

  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文档。上传文档
查看更多
题目:查找和排序?内容:1哈希表设计,2内部排序算法比较日期:2012年5月12日姓名:学号:1、哈希表设计一.实习目的树和图是两种非线性数据结构,通过本次课程设计,熟悉它们的特性,应用树和图解决具体问题。二.问题描述针对某个集体中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。三.需求分析假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。四.概要设计(1)、 针对某个集体中的人名设计一个哈希表,使得平均查找长度不超过R,完成相应的建立和查表程序。(2)、人名为汉语拼音形式,最长不超过19个字符。(3)、假设待填入哈希表的人名有30个,平均查找长度的上限为2。哈希表用除留余数法构造,用伪随机探测在散列法处理冲突。(4)、在输入人名过程中能自动识别非法输入,并给与非法输入的反馈信息要求重新输入。(5)、找成功时,显示姓名及关键字,并计算和输出查找成功的平均查找长度。五.详细设计(给出算法的伪码描述)1 .存储结构设计typedef struct { char *py; //名字的拼音 int k; //拼音所对应的整数}NAME;typedef struct //哈希表{ char *py; //名字的拼音 int k; //拼音所对应的整数 int si; //查找长度}HASH;2 .主要算法设计 (1) 姓名(结构体数组)初始化 名字以拼音的形式够成字符串,将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字。void InitNameList() { char *f; int r,s0,i;NameList[0].py, lgwlkk);NameList[1].py, menfg);NameList[2].py, duanxp);NameList[3].py, tianjjiu);NameList[4].py, liuguangwei);NameList[5].py, caixm);NameList[6].py, liujh);NameList[7].py, liukk);NameList[8].py, fanwd);NameList[9].py, fanweidong);NameList[10].py, fanxie);NameList[11].py, tanyiwen);NameList[12].py, lixu);NameList[13].py, renjh);NameList[14].py, lizhuquan);NameList[15].py, youhy);NameList[16].py, zhanwl);NameList[17].py, tangyaozh);NameList[18].py, xiayj);NameList[19].py, jingminrui);NameList[20].py, wanger);NameList[21].py, sandong);NameList[22].py, liboxian);NameList[23].py, tianshu);NameList[24].py, chouyuyan);NameList[25].py, liuerwei);NameList[26].py, liusanwei);NameList[27].py, wukang);NameList[28].py, mixing);NameList[29].py, lishi); for(i=0;iNAME_NO;i++){ s0=0; f=NameList[i].py; for(r=0;*(f+r)!=\0;r++) /* 方法:将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字*/ s0=*(f+r)+s0; NameList[i].k=s0;}(2) 建立哈希表 (1) 用除留余数法构建哈希函数 (2) 用伪随机探测再散列法处理冲突void CreateHashList() {int i; for(i=0; iHASH_LENGTH;i++) { HashList[i].py=; HashList[i].k=0; HashList[i].si=0;} for(i=0;iHASH_LENGTH;i++){ int sum=0; int adr=(NameList[i].k)%M; //哈希函数 int d=adr

文档评论(0)

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

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

1亿VIP精品文档

相关文档