




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构实验之哈希查找#include#include#include#include#define SIZE 11#define NAMENUM 5#define MANELEN 20#define RSIZE 99typedef structchar nameMANELEN;HashTable;void Createrand(int random);void NameArray(char nameNAMENUMMANELEN);int Hash(int key);int Hashrand(int random,int key,int k);/void Strcpy(char *S1,char *S2);/int StrCmp(char *S1,char *S2);void Hashsearch(char S,int &count,int &location,int random,char nameNAMENUMMANELEN) ;void main()int i,j,k=0,key=0,count=0,total=0,location=0,index=0,randomRSIZE;char tempMANELEN=0,nameNAMENUMMANELEN;HashTable HTSIZE;for(i=0;iSIZE;i+)HT0=0;NameArray(name); /创建姓名表Createrand(random); /创建伪随机数组 for(i=0;iNAMENUM;i+) /将NAMENUM个名字散列到Hash表中strcpy(temp,namei);for(j=0;tempj!=0;j+)key+=(tempj-a)*(tempj-a); /姓名中每个字母与a的ASCII码值之差的平方和作为其关键值printf(关键值为:%dn,key);index=Hash(key); /利用Hash函数计算下标值printf(下标为:%dn,index);if(HT=0) /若该位置空strcpy(HT,temp); /复制到表中相应位置else /若不空,即冲突 k=0;while(HT!=NULL) /只要不空就利用Hashrand函数再次计算下标,直到找到空的位置index=Hashrand(random,key,k);k+;strcpy(HT,temp); /复制到表中相应位置printf(1234567890); /Hash表建立完毕for(i=0;iNAMENUM;i+) /求质量因子Hashsearch(namei,count,location,random,name); /查找并计算该名字在表中位置及查找次数printf(%s查找了%d次,在表中第%d位n,namei,count,location);total+=count; /统计总查找次数printf(总查找次数为%d,total);printf(质量因子为%4.2f,(float)(NAMENUM/total); /求质量因子完毕printf(请任意输入一个待查找的名字:);/任意输入的查找scanf(%s,temp);Hashsearch(temp,count,location,random,name);if(location!=-1)printf(%s查找了%d次,在表中第%d位n,temp,count,location);else printf(无此姓名!n);void Createrand(int random)int i,tag=0;/printf(伪随机数组为:n);for(i=0;iRSIZE;i+)tag+;randomi=rand()%(10*RSIZE);/printf(%-4d,randomi);/if(tag%5=0) /printf(n);/printf(n);void NameArray(char nameNAMENUMMANELEN)int i,j=0,num;num=NAMENUM; printf(请输入%d个学生姓名:n,num);for(i=0;inum;i+)doscanf(%c,&nameij);j+;while(nameij-1!=n);nameij=0;namenum0=0;int Hash(int key)int index;index=key%SIZE;return index;int Hashrand(int random,int key,int k)int index;index=(Hash(key)+(k*k)%SIZE;return index;/*void Strcpy(char *S1,char *S2)int i=0;while(S2i!=0)S1i=S2i;i+;S1i=0;*/*int StrCmp(char *S1,char *S2)int i=0,flag=0;while(S1i=S2i)&(S1i!=0)i+;if(S1i=0)&(S2i=0)flag=1;return flag;*/void Hashsearch(char S,int &count,int &location,int random,char nameNAMENUMMANELEN)int i,index,key=0,flag;for(i=0;Si!=0;i+)key+=(Si-a)*(Si-a); count=1;location=-1;index=Hash(key);flag=strcmp(S,nameindex);if(flag=1)location=index;return;elsedoco
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年户外广告行业需求分析及创新策略研究报告
- 2025年汽车空调压缩机行业前景分析及投资机遇研究报告
- 2025年共享经济行业投资趋势与盈利模式研究报告
- (2025年标准)花籽采购协议书
- (2025年标准)护理用工协议书
- (2025年标准)红日药业协议书
- 2025年智能变电站行业规模分析及投资前景研究报告
- (2025年标准)合资种植经营协议书
- 2025年直流变频空调行业投资趋势与盈利模式研究报告
- (2025年标准)合伙分店协议书
- 《月下过小修净绿堂试吴客所饷松萝茶》赏析
- 数据中心负荷计算方法
- 水箱拆除专项施工方案
- YY/T 1851-2022用于增材制造的医用纯钽粉末
- GB/T 20858-2007玻璃容器用重量法测定容量试验方法
- 纪委案件审理课件教材
- 生活中的会计课件
- 辽宁大学学生手册
- 湘美版美术一年级上册全册课件
- 酒水购销合同范本(3篇)
- 师说一等奖优秀课件师说优质课一等奖
评论
0/150
提交评论