版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
、掌握现实复杂问题的分析建模和解决方法(包括题的基本能力。①读取原电话本存储的电话信息。2)查找信息①根据电话号码查询用户信息。②根据姓名查询用户信息。3)存储信息查询无记录的结果存入记录文档。2)数据文件“new.txt”存放有系统随机生成的3)数据文件“out.txt”存放未查找到的电话信1)从数据文件“old.txt”中读入各项记录,或由系统随机产生各记录,并且把记录保存到“new.txt”中。2)分别采用伪随机探测再散列法和再哈希法解3)根据姓名查找时显示给定姓名用户的记录。4)根据电话号码查找时显示给定电话号码的用t序以用户和计算机的对话方式进行。intCollision_Random(intkey,inti)//伪随机数探量观测再散列法处理冲突voidInit_HashTable_by_name(stringname,stringphone,stringaddress)//以姓名为关键字建立哈希表intCollision_Rehash(intkey,string//再哈希法处理冲突voidInit_HashTable_by_phone(stringname,stringphone,stringaddress)//以电话号码为关键字建立哈希表voidOutfile(stringname,intkey)//在没有找到时输出未找到的记录,打开voidOuthash(intkey)//输出哈希表中的记录init-hashtable-by-name()Seach-by-phone()Collision-rehash()init-hashtable-by-name()Seach-by-phone()Collision-rehash()voidRafile()//随机生成数据,并将数据保存在new.txtvoidInit_HashTable(char*fname,intn)希表intSearch_by_name(stringname)//根据姓名查找哈希表中的记录intSearch_by_phone(stringphone)//根据电话号码查找哈希表中的记录main()Refile()init-hashtable()init-hashtable-by-phone()Seach-by-name()Coiiision-random()Outhash()01 2电话号码查找1221输入电话号码显示哈希表显示哈希表输入姓名无此记录显示信息显示信息无此记录0写入“out.txt”写入“out.txt”001 2电话号码查找1221输入电话号码显示哈希表显示哈希表输入姓名无此记录显示信息显示信息无此记录0写入“out.txt”写入“out.txt”0开始开始 2选择数据来 2建建“new.txt”选择查找方选择查找方式11姓名查找姓名查找结结束键字=(原关键字+伪随机数)%哈希表长。nery为关键字,分别为前四位、中四位、后三位。再用“除留余数法”求的新的关键字=原关表长。冲突,然后将数据存入哈希表。数据存入哈希表。、哈误。修改后程序运行正确。但是原数据是从“old.txt”文件中读取的,刚参考书的帮助下终于得到解决。3、关于伪随机和再哈希的相关内容觉得很难懂,看了很久参考书才有所了解六测试结果2)姓名查找失败)哈希表4)哈希表ry用说明“old.txt”文件中的数据或系统当前自动生成的“new.txt”文件。ry或“根据电话号码查找”两种查找方式。ryryryryry时锻炼了对话形式的菜单的创建和熟练运用。ry在这次数据结构设计中遇到了很多实际性础慢慢开始弄懂它。ry#include<fstream>#include<iostream>#include<string>usingnamespacestd;ofstreamout_file;D[10]={1,3,5,8,13,15,17,21,27,34};//伪随intcountintsizeindex度char*sign;//冲突的标志{ryress};Data*intermediate_data;{key{Re_key=(key+D[i])%sizeindex;returnRe_key;//归回新的要害码}return-1;}voidInit_HashTable_by_name(stringname,stringphone,stringaddress)//以姓名为关键字建立哈希表{for(key=0,p=&name[0];*p;p++)key=key+*p;key=key%42;while(sign[key]=='1')ry{key=Collision_Random(key,i+1);}intermediate_data[key].name=name;//将intermediate_data[key].address=addresintermediate_data[key].phone=phone;sign[key]='1';//设置冲突标志}intCollision_Rehash(intkey,stringr{num1=(str[0]-'0')*1000+(str[1]-'0')*100+(str[2]-'0')*10+(str[3]-'0');num2=(str[4]-'0')*1000+(str[5]-'0')*100+(str[6]-'0')*10+(str[7]-'0');num3=(str[8]-'0')*100+(str[9]-'0')*10+(str[10]-'0');Re_key=num1+num2+num3;Re_key=(Re_key+key)%sizeindex;returnRe_key;ry}voidInit_HashTable_by_phone(stringname,stringphone,stringaddress)//以电话号码为关键字建立哈希表{for(key=0,p=&phone[0];*p;p++)key=key+*p;key=key%42;while(sign[key]=='1'){key=Collision_Rehash(key,phone);}intermediate_data[key].name=name;intermediate_data[key].address=addresintermediate_data[key].phone=phone;ey}voidOutfile(stringname,intkey)//在没有找到时输出未找到的记录,打开文件{ry{{cout<<"\n"<<"文件打开失败!!!\n"<<endl;}out_file<<name<<endl;out_file.close();}}voidOuthash(intkey)//输出哈希表中的{unsignedi;{cout<<"\n"<<"无此记录!!!\n"<<endl;}{for(i=0;i<strlen(&(intermediate_data[key].name[0]));i++)cout<<intermediate_data[key].name[i];ryfor(i=0;i<8;i++)cout<<intermediate_data[key].phone;for(i=0;i<8;i++)cout<<intermediate_data[key].address<<e}}voidRafile()//随机生成数据,并将数据{{cout<<"\n"<<"文件打开失败!!!\n"<<endl;}for(j=0;j<30;j++){namefor(i=0;i<20;i++)name+=rand()%26+'a';out_file<<name<<"";ngphoneryfor(i=0;i<11;i++)phone+=rand()%10+'0';out_file<<phone<<"";tringaddressfor(i=0;i<29;i++)address+=rand()%26+'a';address+=',';out_file<<address<<endl;}out_file<<"*";out_file.close();}voidInit_HashTable(char*fname,intn)//建立哈希表{namengphonetringaddress{cout<<"\n"<<"文件打开失败!!!\n"<<endl;}while(!in_file.eof()){rychar*str=newchar[100];name";phone="";address";in_file.getline(str,100,'\n');//按ifstr*')//判断数据结束reakfor(;str[i]!='';i++)name+=str[i];while(str[i]=='')for(j=0;str[i]!='';j++,i++)phone+=str[i];while(str[i]=='')for(j=0;str[i]!=',';j++,i++)address+=str[i];Init_HashTable_by_name(name,phone,addreelseInit_HashTable_by_phone(name,phone,address);//以电话号码为关键字str}ry}intSearch_by_name(stringname)//根据姓名查找哈希表中的记录{for(key=0,p=&name[0];*p;p++)key=key+*p;key=key%42;while(sign[key]=='1'&&(intermediate_data[key].name!=name)){key=Collision_Random(key,i+1);return-1;}returnkey;}intSearch_by_phone(stringphone)//根据电话号码查找哈希表中的记录{ryfor(key=0,p=&phone[0];*p;p++)key=key+*p;key=key%42;while(sign[key]=='1'&&(intermediate_data[key].phone!=phone)){key=Collision_Rehash(key,phone);return-1;}returnkey;}voidmain(){rFnamesign=newchar[sizeindex];iatedatanewData[sizeindex];ryfor(i=0;i<sizeindex;i++)for(i=0;i<sizeindex;i++){intermediate_data[i].name="";intermediate_data[i].phone="";intermediate_data[i].address="";}cout<<"§**********************************************************§"<<endl;*§"<<endl;*§"<<endl;*§"<<endl;cout<<"§*随机生成cout<<"§*退出程序*§"<<endl;*§"<<endl;*§"<<endl;cout<<"§**********************************************************§"<<endl;ry{cout<<"\n"<<"请输入选择:\n";{turnFname="old.txt";reakRafile();Fname="new.txt";reakcout<<"输入序号有误,请重新输入!!!\n"<<endl;}}while((k!=1)&&(k!=2)&&(k!=0));//system("cls");cout<<"§**********************************************************§"<<endl;ry*§"<<endl;查找方式*§"<<endl;据姓名查找据电话号查找*§"<<endl;*§"<<endl;cout<<"§**********************************************************§"<<endl;{cout<<"\n"<<"请输入选择:\n";{cout<<"输入序号有误,请重新输入!!!\n"<<endl;}}while((ch!=1)&&(ch!=2));//system("cls");ryInit_HashTable(Fname,ch);while(ch==1){cout<<"§**********************************************************§"<<endl;*§"<<endl;cout<<"§*择功能"<<endl;cout<<"§**§"<<endl;希表cout<<"§**§"<<endl;*§"<<endl;*§"<<endl;*§"<<endl;cout<<"§**********************************************************§"<<endl;{rychoicece{{cout<<"\n"<<"请输入姓名:\n";key1=Search_by_name(name);Outfile(name,key1);n<endl;cout"\n"<<"查找Outhash(key1);}reak{表:\n"<<endl;for(i=0;i<sizeindex;i++){{ryoutOuthash(i);}}cout<<"**"<<endl;}reakturn输入!!!\n"<<endl;}}while((choice!=1)&&(choice!=2)&&(cho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗器械 合作协议
- 观光旅游情侣船合作协议
- 2025年四川雅安市栈道商务信息咨询有限责任公司招聘笔试参考题库附带答案详解
- 2025年甘肃天祝县农业产业扶贫开发有限责任公司招聘笔试参考题库附带答案详解
- 2025版新能源车辆运输及售后服务合同3篇
- 2025年度店面出租合同风险评估与预防措施2篇
- 2025年度个人债权担保合同参考文本4篇
- 2025年度个人沿街店房租赁合同(含租赁期限调整与续约流程)3篇
- 2025版建筑水电安装工程补充协议书3篇
- 2025年度住宅小区公共区域装修改造合同
- 2024年决战行测5000题言语理解与表达(培优b卷)
- 四年级数学上册人教版24秋《小学学霸单元期末标准卷》考前专项冲刺训练
- 中国游戏发展史课件
- (完整版)减数分裂课件
- 银行办公大楼物业服务投标方案投标文件(技术方案)
- 第01讲 直线的方程(九大题型)(练习)
- 《基础会计》教学课件-整套教程电子讲义
- 微粒贷逾期还款协议书范本
- 人教版七年级上册数学全册课时练习带答案
- NBT 47013.4-2015 承压设备无损检测 第4部分:磁粉检测
- 2024年上海市中考数学真题试卷及答案解析
评论
0/150
提交评论