2022年2022年哈希查找算法的源代码c语言 .pdf
《2022年2022年哈希查找算法的源代码c语言 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年哈希查找算法的源代码c语言 .pdf(7页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、哈希查找算法的源代码 c 语言【问题描述】针对自己的班集体中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查表程序。基本要求 假设人名为中国姓名的汉语拼音形式。待填入哈希表的人名共有30 个,取平均查找长度的上限为2。哈希函数用除留余数法构照,用链表法处理冲突。测试数据 读取熟悉的 30 个人的姓名。#include#include#include using namespace std;#define Maxsize 57 struct record char name20;char tel20;char add20;typedef record*precord;str
2、uct HashTable int elemMaxsize;/存放数组 a 的下标int count;typedef HashTable*pHashTable;int Number;/统计当前数组 a 中的记录总数void Getdata(precord a)/从文件 telphone.txt中读取数据存放到数组a Number=0;ifstream infile(telphone.txt,ios:in|ios:binary);if(!infile)cout文件打开失败!n;exit(1);while(!infile.eof()&infile.get()!=EOF)/文件不为空并且文件指针没有
3、指到结束符infile.seekg(Number*sizeof(aNumber),ios:beg);/定位文件指针infile.read(char*)&aNumber,sizeof(aNumber);Number+;名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 7 页 -infile.close();void Add(precord a)/添加记录 int i,num;cout 当前文件内已有 Number条记录 n;coutnum;ofstream ofile(telphone.txt,ios:app);if(!ofile)cout文件打开失败!;exit(1);for(i=
4、0;inum;i+)cout请输入第 Number+1个人的姓名 aNumber.name;cout 请输入第 Number+1 个人的电话 aNumber.tel;cout 请输入第 Number+1 个人的地址 aNumber.add;ofile.seekp(ios:end);ofile.write(char*)&aNumber,sizeof(aNumber);Number+;ofile.close();void Print(precord a)/显示所有记录 int i;for(i=0;iNumber;i+)cout 第i+1 个人的信息为:n;cout 姓名:ai.nameendl;c
5、out 电话:ai.telendl;cout 地址:ai.addendl;int Hash(char str)/除留取余 long val=0;char p20,*p1;strcpy(p,str);p1=p;while(*p1!=0)val=val+*p1+;/将字符串中的所有字符对应的ASCII 值相加名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 7 页 -return(val%Maxsize);int derter;/线性增量int Line_Sollution(int address)/采用线性探测解决冲突 derter+;if(derter=Maxsize)return
6、(-1);else return(address+derter)%Maxsize);int n;int Square_Sollution(int address)/采用平方探测法解决冲突 int j;derter+;if(derter=Maxsize)return-1;n=n*(-1);j=(int(pow(derter,2)*n+address)%Maxsize;return(j);void Init_Hash(pHashTable h)/初始化哈希表 int i;for(i=0;ielemi=-1;int menu;void Creathash_Name(pHashTable h,prec
7、ord a)/以用户名为关键字创建哈希表 cout-n;cout 1-以线性探测建表 n;cout 2-以平方探测建表 n;coutmenu;Init_Hash(h);for(i=0;ielemaddress!=-1)if(menu=1)address=Line_Sollution(address);名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 7 页 -else address=Square_Sollution(address);if(address=-1)break;if(address!=-1)h-elemaddress=i;h-count+;cout 姓名哈希表已成功建
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年哈希查找算法的源代码c语言 2022 年哈希 查找 算法 源代码 语言
限制150内