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

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

ID:35617720

大小:140.50 KB

页数:23页

时间:2019-04-02

课程设计报告--散列法的实验研究_第1页
课程设计报告--散列法的实验研究_第2页
课程设计报告--散列法的实验研究_第3页
课程设计报告--散列法的实验研究_第4页
课程设计报告--散列法的实验研究_第5页
资源描述:

《课程设计报告--散列法的实验研究》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

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

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

3、课程设计要求比较几种哈希函数的构造方法和解决冲突的方法对查询性能的影响。b.概要设计该程序实现对哈希函数的构造方法、处理冲突的方法及在哈希表中查找数据的功能。用线性再散列方法建立哈希表,用代码实现为:typedefstruct{intkey;intsi;}HashTable1;voidCreateHashTable1(HashTable1*H,int*a,intnum)//哈希表线性探测在散列;{inti,d,cnt;for(i=0;i

4、t=1;d=a[i]%HashSize;if(H[d].key==0){H[d].key=a[i];H[d].si=cnt;}else{do{d=(d+1)%HashSize;cnt++;}while(H[d].key!=0);H[d].key=a[i];H[d].si=cnt;}}printf("线性再探索哈希表已建成!");}用二次探测再散列建立哈希表,代码实现如下:voidCreateHash3(HashTable3*h,int*a,intnum)//二次探索表{inti,p=-1,c,pp;for(i=0;i

5、=a[i]%HashSize;pp=p;while(h->elem[pp]!=NULL){pp=Collision(p,c);if(pp<0){printf("第%d个记录无法解决冲突",i+1);continue;}}h->elem[pp]=&(a[a[i]]);h->count++;printf("第%d个记录冲突次数为%d",i+1,c);}printf("建表完成!此哈希表容量为%d,当前表内存储的记录个数%d.",HashSize,h->count);}二次探测再散列法解决冲突intCollision(intp,int&

6、c){inti,q;i=c/2+1;while(i=0)returnq;elsei=c/2+1;}else{q=(p-i*i)%HashSize;c++;if(q>=0)returnq;elsei=c/2+1;}}return(-1);}用线性再散列法查找,代码实现如下:voidSearchHash1(HashTable1*h,intdata){intd;d=data%HashSize;if(h[d].key==data)printf("数字%d的探查

7、次数为:%d",h[d].key,h[d].si);else{dod=(d+1)%HashSize;while(h[d].key!=data&&dlink;while(q->key

8、!=data&&q->next!=NULL)q=q->next;if(q->next!=NULL)print

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。