版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、广州XX学院数据结构与算法实验报告专业班级姓 名实验名称计科181实验日期2019.12.10XX学 号20181533实验6.散列表查找操作指导教师曾岫成 绩一、实验目的1 .熟悉散列查找方法和特点。2 .掌握散列查找解决冲突的方法。3 .用C语言完成算法和程序设计并上机调试通过;4 .撰写实验报告,给出算法思路或流程图和具体实现(源程序)、算法分 析结果(包括时间复杂度、空间复杂度以及算法优化设想)、输入数据及程序运 行结果(必要时给出多种可能的输入数据和运行结果)。二、实验要求1、程序要求包含头文件以及 main函数2、实验中所设计的函数(算法)需要满足实验的要求3、程序的编译、运行要成
2、功通过4、运行的结果正确,且有相应的提示三、实验环境WIND7 VC+6.0或C与C+程序设计学习与实验系统四、实验内容1 .闭散列表查找的实现2 .开散列表查找的实现五、源代码及算法分析1 .闭散列表查找的实现假定的最大存储单元数*/ 以整型为元素类型*/定义散列表数组*/#include "stdio.h"#define MAXSIZE 20/*typedef int keytype;/*typedef keytype HTableMAXSIZE; /*/*用线性探测再散列法处理冲突建立散列表*/void creHT(HTable HT,int m,int p) /*创
3、建长度为 m的散列表,p 为除留余数中的除数*/ int i,n=0; keytype x;for(i=0;i<m;i+) HTi=-1;/*printf("Input datas(-1:End):"); scanf("%d",&x);while(x!=-1) n+;if(n>m) break; /* n i=x%p;/*while(HTi!=-1)/*i=(i+1)%m;HTi=x;/*scanf("%d",&x);/* 输出散列表*/void list(HTable HT,int m) /* int i
4、;for(i=0;i<m;i+) printf("%5d",i);printf("n");for(i=0;i<m;i+) printf("%5d",HTi);printf("n");初始化散列表*/记录散列表中的元素个数*/计算散列地址*/线性探测*/将元素存入空闲单元*/输出长度为m的散列表*/在长度为m的散列表中取地址*/找到 */没找到*/* 查找算法*/int search(HTable HT,int m,keytype x,int p)/* 查找关键字为x 的元素 */ int i,j;i=x
5、%p;/*j=i;while(HTj!=-1) if(HTj=x) return j; /*j=(j+1)%m;if(j=i) break;/*return -1;/* 计算查找成功时的平均查找长度*/float ASLsucc(HTable HT,int m,int p) /* 计算查找成功时的平均查找长度 */ int i,j,n,s=0;for(i=0,n=m;i<m;i+)/*查找成功的可能性有n 种 */ if(HTi=-1) n-;continue;/*j=HTi%p;s+=(m+i-j+1)%m;/*次数,并进行累加*/return (float)s/n;/* 计算查找失败
6、时的平均查找长度*/float ASLfail(HTable HT,int m,int p) /*度 */ int i,j,k,s=0;for(i=0;i<p;i+)/* k=0;j=i;while(HTj!=-1) k+;j=(j+1)%m;if(j=i) break;/*况 */s+=k;/* k并进行累加*/return (float)s/p;main() HTable HT;int m=9,p=9;keytype key;creHT(HT,m,p);/*列函数的余数为9。以【例7.8】为例 */list(HT,m);/*printf("n"); scanf(&
7、quot;%d",&key);/*printf("%dn",search(HT,m,key,p); /* printf("%6.2fn",ASLsucc(HT,m,p); /*长度*/printf("%6.2fn",ASLfail(HT,m,p); /*长度*/2开散列表查找的实现统计散列表中的元素个数*/计算成功查找HTi 的比较计算查找失败时的平均查找长查找失败的可能性有p 种 */当元素填满整个空间时的情为查找失败时的比较次数,建立散列表,长度为9,散输出散列表*/输入查找元素*/输出查找结果*/输出查找成功时
8、的平均查找输出查找失败时的平均查找#include "stdio.h"/*typedef int keytype; typedef struct node keytype data;struct node *next;slink;/*/* 用拉链法处理冲突建立散列表*/void creHT(slink *HT,int m,int p) /*数 */ int i; keytype x; slink *s; for(i=0;i<m;i+)HTi=NULL;/*printf("Input datas(-1:End):"); scanf("%d&
9、quot;,&x);while(x!=-1) i=x%p;/*s=(slink *)malloc(sizeof(slink); s->data=x;/*s->next=HTi; HTi=s;/*scanf("%d",&x);/* 输出散列表*/void list(slink *HT,int m) /* int i;slink *q;for(i=0;i<m;i+) printf("%5d=> ",i);q=HTi;while(q) printf("%5d ",q->data); q=q-&g
10、t;next; printf("n");关键字类型*/链表结点类型*/建立表长为m的散列表,p为除散列表初始化*/计算散列地址*/生成结点*/用首插法插入结点*/输出散列表,m是表长*/* 查找算法*/int search(slink *HT,int p,keytype x) /* 在散列表中查找指定元素,p 为除数 */ slink *q;int i;i=x%p;/*计算散列地址*/q=HTi;while(q)/* if(q->data=x) return i; /* q=q->next;return -1;/*/* 计算查找成功时的平均查找长度*/float
11、 ASLsucc(slink *HT,int p) /*找长度 ,p 为除数 */ int i,n=0,k,s=0; slink *q;for(i=0;i<p;i+) k=0;q=HTi;while(q) s+=+k;/*加 */n+;/*q=q->next;return (float)s/n;/* 计算查找失败时的平均查找长度*/float ASLfail(slink *HT,int p) /*长度 ,p 为除数 */ int i,n=0; slink *q;for(i=0;i<p;i+) q=HTi; while(q) n+;/* n次数 */q=q->next;return (float)n/p;在相应链表中查找*/找到 */没找到 */计算查找成功时的平均查计算比较次数,并进行累统计表中的元素个数*/计算查找失败时的平均查找既是元素个数,也是比较main() slink *HT9;int m=9,p=9;keytype key;creHT(HT,m,p);/*为例 */list(HT,m);/*scanf("%d",&key);/*printf("%dn",search(HT,p,key); /*printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度互联网企业派遣员工网络安全合同3篇
- 2025年全新公对公借款合同模板下载及服务支持10篇
- 二零二五年度体育馆租赁合同附体育赛事推广及赞助招商服务
- 2025版智能工厂生产线改造施工合同4篇
- 二零二五年度新能源产品销售代理合作合同范本3篇
- Bobath技术闫秀丽讲解
- 2025年度个人艺术品租赁借款合同范本及租赁期限约定
- 2025年室内墙面批白工程售后服务合同
- 二零二五年度户外广告照明外接电源供应合同
- 2025年度个人房屋抵押贷款担保及养老保障服务合同
- 道路沥青工程施工方案
- 2025年度正规离婚协议书电子版下载服务
- 《田口方法的导入》课件
- 内陆养殖与水产品市场营销策略考核试卷
- 电力电缆工程施工组织设计
- 医生给病人免责协议书(2篇)
- 票据业务居间合同模板
- 高中物理选择性必修2教材习题答案
- 应急预案评分标准表
- “网络安全课件:高校教师网络安全与信息化素养培训”
- 锂离子电池健康评估及剩余使用寿命预测方法研究
评论
0/150
提交评论