ImageVerifierCode 换一换
格式:DOCX , 页数:8 ,大小:16.12KB ,
资源ID:8108875      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8108875.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(散列法的实验研究课程设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

散列法的实验研究课程设计报告.docx

1、散列法的实验研究课程设计报告课程设计报告问题描述:(1) 散列法中,散列函数构造方法多种多样,同时对于同一散列函数解决冲突的方法也可以不同。两者是影响查询算法性能的关键因素。(2) 程序实现几种典型的散列函数构造方法,并观察,不同的解决冲突方法对查询性能的影响。a. 需求分析:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。对不同的关键字可能得到同一散列地址,即key1key2,而f(key1)=f(key2),这种现象称冲突。具有相同函数值的关键字对该散列函数来说称做同义词。综上所述,根据散列函数H(key)和处理冲突的方法将一组关键

2、字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象”作为记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表或散列,所得的存储位置称散列地址。散列表的查找过程基本上和造表过程相同。一些关键码可通过散列函数转换的地址直接找到,另一些关键码在散列函数得到的地址上产生了冲突,需要按处理冲突的方法进行查找。对散列表查找效率的量度,依然用平均查找长度来衡量。查找过程中,关键码的比较次数,取决于产生冲突的多少,产生的冲突少,查找效率就高,产生的冲突多,查找效率就低。因此,影响产生冲突多少的因素,也就是影响查找效率的因素。该课程设计要求比较几种哈希函数的构造方法和解决冲突的方

3、法对查询性能的影响。b. 概要设计该程序实现对哈希函数的构造方法、处理冲突的方法及在哈希表中查找数据的功能。用线性再散列方法建立哈希表,用代码实现为:typedef structint key;int si;HashTable1;void CreateHashTable1(HashTable1 *H,int *a,int num)/哈希表线性探测在散列;int i,d,cnt;for(i=0;iHashSize;i+)Hi.key=0;Hi.si=0;for(i=0;inum;i+)cnt=1;d=ai%HashSize;if(Hd.key=0)Hd.key=ai;Hd.si=cnt;else

4、dod=(d+1)%HashSize;cnt+;while(Hd.key!=0);Hd.key=ai;Hd.si=cnt;printf(n线性再探索哈希表已建成!);用二次探测再散列建立哈希表,代码实现如下:void CreateHash3(HashTable3 *h,int *a,int num)/二次探索表int i,p=-1,c,pp;for(i=0;ielempp!=NULL)pp=Collision(p,c);if(ppelempp=&(aai);h-count+;printf(第%d个记录冲突次数为%dn,i+1,c);printf(n建表完成!n此哈希表容量为%d,当前表内存储的

5、记录个数%d.n,HashSize,h-count);二次探测再散列法解决冲突int Collision(int p,int &c)int i,q;i=c/2+1;while(i=0)return q;elsei=c/2+1;elseq=(p-i*i)%HashSize;c+;if(q=0)return q;else i=c/2+1;return (-1);用线性再散列法查找,代码实现如下:void SearchHash1(HashTable1 *h,int data)int d;d=data%HashSize;if(hd.key=data)printf(数字%d的探查次数为:%dn,hd.k

6、ey,hd.si);elsedod=(d+1)%HashSize;while(hd.key!=data & dHashSize);if(dlink;while(q-key!=data & q-next!=NULL)q=q-next;if(q-next!=NULL)printf(数字%d的查找次数为:%dn,q-key,q-next);elseprintf(没有找到你要查找的那个数n);用链地址法查找,代码实现如下:void CreateHashTable2(HashTable2 *ht,int *a,int num)/哈希表链地址;int i,d,cnt;Node *s,*q;for(i=0;

7、ilink=NULL;for(i=0;ikey=ai;s-next=NULL;d=ai%num;if(htd-link=NULL)htd-link=s;s-si=cnt;elseq=htd-link;while(q-next!=NULL)q=q-next;cnt+;cnt+;s-si=cnt;q-next=s;c. 详细设计(1) 程序中结构体的定义typedef structint key;int si;HashTable1;typedef struct nodeint key;int si;struct node *next;Node;typedef structNode *link;Ha

8、shTable2;typedef struct int * elemHashSize;int count;int size;HashTable3;(2) 主函数模块void main()int data;HashTable1 hash1HashSize;HashTable2 * hash2HashSize;HashTable3 * ha;ha=(HashTable3 *)malloc(sizeof(HashTable3);for(int i=0;ielemi=NULL;ha-count=0;ha-size=HashSize;int aMaxSize;while(1)printf(n ); printf(n 欢迎使用本系统 ); printf(n ); printf(n 散列法的实验研究 );printf(n 【1】. 添加数据信息 【2】 数据的输出 );printf(n 【3】. 建立哈希表(线性再散列) );printf(n 【4】. 建立哈希表(二次探测再散列) );printf(n 【5】. 建立哈希表(链地址法) );printf(n 【6】. 线性再散列法查找 );printf(n 【7】. 二次探测再散列法查找 );printf(n 【8】. 链地址法查找 );printf(n 【0】. 退出程序 );printf(n );printf(n);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1