资源预览内容
第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
亲,该文档总共3页全部预览完了,如果喜欢就下载吧!
资源描述
哈希表的建立和查找/* 针对某个集体比方所在班级中的人名设计一个哈希表,使的平均查找的长度不超过 2 完成相应的建表和查表的程序题目要求:假设人名为姓名的汉语拼音形式,待填入哈希表的人名工有 30 个,取平均查找长度的上限为 2。哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突。测试数据自定义。*/ #include #include#define HASH_LEN 50y=“wanghui“; NameList1.py=“mayuelong“; NameList2.py=“chenzhicheng“; NameList3.py=“sunpeng“; NameList4.py=“zengqinghui“; NameList5.py=“liqingbo“; NameList6.py=“liujunpeng“; NameList7.py=“jiangquanlei“; NameList8.py=“xingzhengchuan“; NameList9.py=“luzhaoqian“; NameList10.py=“gaowenhu“; NameList11.py=“zhuhaoyin“; NameList12.py=“chenlili“; NameList13.py=“wuyunyun“; NameList14.py=“huangjuanxia“; NameList15.py=“wangyan“; NameList16.py=“zhoutao“; NameList17.py=“jiangzhenyu“; NameList18.py=“liuxiaolong“; NameList19.py=“wangziming“; NameList20.py=“fengjunbo“; NameList21.py=“lilei“; NameList22.py=“wangjia“; NameList23.py=“zhangjianguo“; NameList24.py=“zhuqingqing“; NameList25.py=“huangmin“; NameList26.py=“haoyuhan“; NameList27.py=“zhoutao“; NameList28.py=“zhujiang“; NameList29.py=“lixiaojun“;for (i=0;iNAME_NO;i+)s0=0;f=NameListi.py;for (r=0;*(f+r)!=”0”;r+)/* 方法:将字符串的各个字符所对应的 ASCII 码相加,所得的整数做为哈希表的关键字*/s0=*(f+r)+s0; NameListi.k=s0; void CreateHashList() y=“; HashListi.k=0; HashListi.si=0;for (i=0;iHASH_LEN;i+)int sum=0;int adr=(NameListi.k)%M; i=0)=NameListi.k; HashListadr.py=NameListi.py; HashListadr.si=1;else%10+1)%M;!=0);HashListd.k=NameListi.k; HashListd.py=NameListi.py; HashListd.si=sum+1;voidFindList() =s0)y,s0); else if (HashListadr.k=0)printf(“无此记录!“); elseint g=0; dod=(d+s0%10+1)%M;=0)printf(“无此记录! “); g=1;if (HashListd.k=s0)printf(“n 姓名:%s关键字:%d查找长度为:%d“,HashListd.py,s0,sum); g=1;while(g=0); voidDisplay() ;printf(“tt%d “,HashListi.si); printf(“tt%d “,HashListi.k%M); printf(“t %s “,HashListi.py); printf(“n“);for (i=0;iHASH_LEN;i+) average+=HashListi.si; average/=NAME_NO;printf(“nn 平均查找长度:ASL(%d)=%f nn“,NAME_NO,average);void main()char ch1;printf(“nprintf(“ printf(“ printf(“ printf(“ printf(“InitNameList();哈希表的建立和查找n“);*n“);|D. 显示哈希表F. 查找Q. 退出|n“);|n“);|n“);*n“);CreateHashList ();while(1)printf(“nOption-:“); fflush(stdin);ch1=getchar();if (ch1=”D”|ch1=”d”) Display();else if (ch1=”F”|ch1=”f”) FindList();else if (ch1=”Q”|ch1=”q”) return;elseprintf(“n 请输入正确的选择!“);
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号