哈希表的操作.docx

上传人:p** 文档编号:438692 上传时间:2023-08-28 格式:DOCX 页数:16 大小:112.17KB
下载 相关 举报
哈希表的操作.docx_第1页
第1页 / 共16页
哈希表的操作.docx_第2页
第2页 / 共16页
哈希表的操作.docx_第3页
第3页 / 共16页
哈希表的操作.docx_第4页
第4页 / 共16页
哈希表的操作.docx_第5页
第5页 / 共16页
哈希表的操作.docx_第6页
第6页 / 共16页
哈希表的操作.docx_第7页
第7页 / 共16页
哈希表的操作.docx_第8页
第8页 / 共16页
哈希表的操作.docx_第9页
第9页 / 共16页
哈希表的操作.docx_第10页
第10页 / 共16页
亲,该文档总共16页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《哈希表的操作.docx》由会员分享,可在线阅读,更多相关《哈希表的操作.docx(16页珍藏版)》请在第壹文秘上搜索。

1、哈希表操作一目的1 .巩固和深入对哈希表的创建、查找、插入等方法理论学问的理解。2 .把握建立哈希表的方法,本试验是采纳的是除留余数法创建。3 .把握哈希表解决冲突的方法,本试验用的是线性探测再散列的方法。4 .巩固对程序模块化设计的要求。二需求分析1 .对于哈希表的基本操作首先是要创建一个哈希表,哈希表的创建思想是由哈希函数得到,本试验就采纳了除留余数法创建哈希表。2 .创建好哈希表就需要在哈希表中插入元素,本试验是需要插入单词,所以需要调用String函数库,通过每个单词的地址数来进行下一步的查找方案。当插入单词地址已经存在时,就产生了冲突,因此需要采纳线性探测再散列的方式来解决冲突。3

2、.当哈希表插入单词完成之后便可以显示哈希表的存储状况,因此需要输出整个哈希表。4 .要想计算平均查找长度首先要对哈希表中的元素进行查找,当全部单词查找结束,查找长度也得出。5 .要实现上诉需求,程序需要采纳模块化进行设计。三概要设计1.基本操作:voidInitwordlist(intn)初始化哈希表操作结果:以字符形式插入单词,将字符串的各个字符所对应的ASCH码相加,所得的整数做为哈希表的关键字。voidCreatehashlist(intn)创建哈希表,并插入单词操作结果:(1)用除留余数法构建哈希函数;(2)用线性探测再散列处理冲突。voidfind()查找哈希表中的单词操作结果:在哈

3、希表中进行查找,输出查找的结果和关键字,并计算和输出查找胜利的平均查找长度。voidprinthash()显示哈希表操作结果:显示哈希表的存储状况:位置dtt关键字6dtt单词%snfloataverage()操作结果:计算出平均查找长度。voidmenu()菜单函数设计操作结果:显示格式:1向哈希表中插入单词(15);2查找哈希表中的单词;3显示哈希表的存储状况;4计算哈希表的平均查找长度;5退出程序。intmain()主程序设计操作结果:通过调用各个函数操作得到结果。2.程序流程图:四具体设计1.全局变量:defineHASHLEN15/HASH_LEN长度定义为15defineM13/取

4、模质数M为132 .存储结构设计:WORDWOrdIiStHASH_LEN;全局变量typedefstructCharWOrd15;输入的单词intnumber;单词所对应的整数(WORD;typedefstructchar*word;存储输入的单词intnumber;单词所对应的整数intnumofseek;查找的次数HASH;HASHhashlistHASH_LEN;全局变量3 .哈希表初始化voidInitworcllist(intn)(inti,j;char*w;设立一个指针,指向单词的地址for(i=0;in;i+)intSUnI=O;存放单词地址Printf(请输入第%d个单词(按

5、回车结束):,i+l);gets(wordlisti.word);/输入单词w=word1isti.word;取地址for(j=0;*(w+j)!=0;j+)将字符串的各个字符所对应的ASCIl码相加,所得的整数做为哈希表的关键字sum=sm+*(w+j);wordlisti.number=sum;存入每个单词的存放地址,即关键字4 .哈希表的创建voidCreatehashlist(intn)创建哈希表,并插入单词inti;for(i=0;iHASH_LEN;i+)hashlisti.WOrd=;输入单词hashlisti.number=O;/关键字hashlisti.numofseek=0

6、;查找次数for(i=0;in;i+)intaddress,sum=O;address=wordlisti.number%M;除留余数法,将单词插入到哈希表中if(hashlistaddress.numofseek=0)hashlistaddress,word=word1isti.word;hashlistaddress,number=wordlisti.number;hashlistaddress,numofseek=l;elseintd;d为冲突次数d=l;doaddress=(word1isti.number+d)%M;线性探测解决冲突d+;sum+;while(hashlistaddr

7、ess.numofseek!=0);hashlistaddress,word=wordlisti.word;hashlistaddress,number=word1isti.number;hashlistaddress,numofseek=sum+l;)voidfind()查找哈希表中的单词charseek15,*p;设置查找长度不超过表长intm=0,i=0,j=0,d=l;Printf(请输入你想查找的单词(输入回车结束):”);gets(seek);p=seek;for(i;*(p+i)!=0;i+)依次查找j+=*(p+i);得到待查找单词的关键字j=j%M;显示在哈希表中的位置whi

8、Ie(!strcmp(hashlistj.word,seek)=0)/用StrCnlP函数来比较字符串j=(j+d)%M;有冲突状况下的地址m+;d+;if(m=HASH_LEN)break;超过表长)ifCm=HASHLEN)Printf(哈希表中没有这个单词n);elsePrintf(单词s存在,他的关键字是%dn”,hashlistj.word,hashlistj.number);)6 .哈希表的显示voidprinthashOinti=0;for(i=0;iHASH_LEN;i+)Printf(位置%dtt关键字%-6dtt单词%sn”,i,hashlisti.number,hashl

9、isti.word);)7 .菜单界面设计voidmenu()(Printf(“tt*n);printf(,tt*1向哈希表中插入单词(青输入你的选择:XXXWX15长词词曹一单单人的存平播中的的量表表XII哈哈程磨示算出显g12345yinOeab1;:0三SI1S:1结结结结结结结结露词回回回回回回回回回-1Jr:同同同同同同同同同h七-d即与与宫与与年与z-:-klrkkkkkl/白木儿1234567891SR第第第第第第第第入入-z.frji1t7jrfxs三sl住用在4月江4性QE本月清性4月住用3查找单词度长入的存平播中的K-量表表OtO1IgrlFylnol0s3s:1结结结结结结结结结一-wH441store词回回回回回回回回回缸词词1XZ0:1结结结结结结结结结锣WHW屿storegirl左结车0回43三fp今一令一I-二二:二二:二二:二二二:4乌l-kL1JSZ2SJXI2lrB犀疆朝朝朝翻朝朝鬻格选个选查常查在选:的想10的想S想S词回回回回回回回回回I1按按词词单恢第第第第第第第第你入入入入入入入入入入入人入人文入K入词输.11ER月vH.H.OE.nE性月在H.411e月i目哈比4

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

当前位置:首页 > IT计算机 > 数据结构与算法

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!