散列法的实验研究数据结构课程设计.doc

散列法的实验研究数据结构课程设计.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课 程 设 计 报 告 学 院: ****** 专 业: ****** 班 级: ****** 课程设计科目 ****** 学生姓名: ****** 指导教师: ****** 完成时间: 2010年12 散列法的实验研究 设计任务与目标 基本要求: 设每个记录有下列数据项:电话号码、用户名、地址; 从键盘输入各记录,分别以电话号码和用户名为关键字建立散列表; 采用一定的方法解决冲突; 查找并显示给定电话号码的记录; 查找并显示给定用户名的记录。 进一步完成内容: 设计不同的散列函数,比较冲突率; 在散列函数确定的前提下,尝试各种不同类型处理冲突的方法,考察平均查找长度的变化。 二、方案设计与论证 运用散列表查找技术查找电话记录,其中运用到哈希函数。在用switch()中遇到了不能连续操作,只能进行一次后就执行完毕的困难,最后将其放入while()语句中,得到解决。改变哈希函数的解决冲突的方法。 初步实现了电话号码的查找功能。 三、算法说明 void hash(char num[11]) //哈希函数 { int i = 0; key1=(int)num[0]; while(num[i]!=NULL) { key1+=(int)num[i]*(int)num[i]; i++; } key1=key1%20; } 用到哈希函数,用到除留余数法确定关键值,以减少冲突。用find函数查找电话记录,find函数如下: void find(char num[11]) //查找用户信息 { hash(num); node *q=phone[key1]-next; while(q!= NULL) { if(strcmp(num,q-num)==0) break; q=q-next; } if(q) coutq-name_ q-address_q-numendl; else cout无此记录endl; } 四、全部源程序清单 #include iostream #include string #include fstream using namespace std; unsigned int key1; unsigned int key2; struct node { char name[8],address[20]; char num[11]; node * next; }; typedef node* pnode; typedef node* mingzi; node **phone; node **nam; int hash(char num[]) { int j=key1%20; if (num[j]==key1) return j; int i=(j+1) % 20; while (i!=j) { if (num[i]==key1) return i; i=(i+1) % 20; } if (i==j) throw 溢出; else num[i]=key1; } int hash2(char nam[]) { int j=key2%20; if (nam[j]==key2) return j; int i=(j+1) % 20; while (i!=j) { if (nam[i]==key2) return i; i=(i+1) % 20; } if (i==j) throw 溢出; else nam[i]=key2; } node* input() { node *temp; temp = new node; temp-next=NULL; cout输入姓名:endl; cintemp-name; cout输入地址:endl; cintemp-address; cout输入电话:endl; cintemp-num; return temp; } int apend() { node *newphone; node *newname; newname=input(); newphone=newname; newphone-next=NULL; newname-next=NULL; hash(newphone-num

文档评论(0)

yyons2019 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档