版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验十数据结构查找一、实验目的1、掌握查找表、动态查找表、静态查找表和平均查找长度的概念。2、掌握线性表中顺序查找和折半查找的方法。3、学会哈希函数的构造方法,处理冲突的机制以及哈希表的查找。二、实验预习说明以下概念1、顺序查找:2、折半查找:3、哈希函数:4、冲突及处理:三、实验内容和要求1.静态查找表技术依据顺序查找算法和折半查找算法的特点, 设计出完整的C源程序。并完成问题: 查找表 1 : 8,15,19,26,33查找表 2 :12, 67,29,15,62查找key=41的算法:顺序查找查找key=35的算法:折半查找顺序查找算法算法实现代码#include#define N 10
2、int arrayN = 12,76,29,15,62,35,33,89,48,20;int search(int array,int key) for(int i=0;iN;i+)if(key=arrayi)return i;return 0;int main()4135对下面的两个查找表选择一个合适的算法,47,52,64,90 ,查找 key = 41 33,89,48,20 ,查找 key =35 比较次数:5比较次数:5int a;a=search(array,35);if(a)printf(-查找的关键字35已经找到!它在表中的下标为:dn,a);elseprintf(该关键字不存
3、在!n);return 0;折半查找算法算法实现代码#include#define N 10int arrayN = 8,15,19,26,23,41,47,52,64,90;int search(int key,int array)int low=0;int mid;int high=N-1;int ley=41;while(lowkey)high=mid-1;elselow=mid+1;return 0;int main()int a;a=search(41,array);if(a)printf(-关键字:41已找到!该关键字在表中的下标为:dn,a);elseprintf(该关键字不存在
4、!n);return 0;五、教师评语2、哈希表的构造与查找/*采用开放地址法构造哈希表*/#include#include#define MAXSIZE 25#define P 13#define OK 1#define ERROR 0#define DUPLICATE -1#define TRUE 1#define FALSE 0typedef struct /*哈希表元素结构*/int key; /*关键字值*/int flag; /*是否存放元素*/ElemType;typedef struct ElemType dataMAXSIZE;int count; /*元素个数 */int
5、sizeindex; /*当前哈希表容量*/HashTable;int d115 = 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14; /*线性探测序列 */int d215 = 0,1,-1,2*2,-2*2,3*3,-3*3,4*4,-4*4,5*5,-5*5,6*6,-6*6,7*7,-7*7; /*二次探测序列*/void dataset(int ds,int *len);int InsertHash(HashTable *H,int e,int d);int CreateHash(HashTable *H,int ds,int len,int d);int Se
6、archHash(HashTable *H, int e,int d);void menu();/*输入查找表*/void dataset(int ds,int *len)int n,m;n=0;printf(n查找表输入:);while(scanf(%d”,&m)=1) /*以输入一个非整数作为结束*/dsn=m;n+;*len=n;/*计算哈希地址,插入哈希表*/int InsertHash(HashTable *H,int e,int d)int k,i=1;k=e%P;while(H-datak.flag=TRUE|k=15)return ERROR;H-datak.key=e;H-d
7、atak.flag=TRUE;H-count+;return OK;/*构造哈希表*/int CreateHash(HashTable *H,int ds,int len,int d) int i;for(i=0;icount=MAXSIZE)return ERROR;return OK;/*初始化哈希表*/void InitHash(HashTable *H)int i;for(i=0;idatai.key=0;H-datai.flag=FALSE;/*在哈希表中查找*/int SearchHash(HashTable *H, int e,int d)int k,i=1;k=e%P;whil
8、e(H-datak.key!=e)k=(e%P+di)%MAXSIZE;i+;if(i=15)return -1;return k;/*演示菜单*/void menu()int choice;int *p;HashTable h;h.count=0;h.sizeindex=MAXSIZE;int aMAXSIZE=0;int i,n,e;dataset(a,&n); /*建立查找表*/getchar();printf(n);doprintf(n哈希查找演示n);printf(n1.线性探测构造哈希表n);printf(n2.二分探测构造哈希表n);printf(n3.退出n);printf(n
9、 输入选择:);scanf(%d”,&choice);if(choice=1)p=d1;else if(choice=2)p=d2;elsereturn;InitHash(&h);/*初始化哈希表*/if(!(i=CreateHash(&h,a,n,p) /*构造哈希表 */ printf(n哈希表构造失败! n);else if(i=DUPLICATE)printf(n哈希表具有重复关键字! n);elseprintf(n 哈希表:n);for(i=0;i* I* ll Hirnv U I* iniIij I H jnl mjL4 Ai-lMfJLF Lflri LI I;M b者曲E=F王
10、日参II E用旎1E 耳村#include定义函数库可以便于可以使用后面的函数语句;#define N 10定义大N为10代表数组的最大个数为10个数;int arrayN = 12,76,29,15,62,35,33,89,48,20;int search(int array,int key)定义搜索内容包括以查找的一维数组、关键字;for(int i=0;iN;i+)for ()函数循环进对数组的所有数据进行查找,使得数组可以全部被查询;if (key=arrayi)判断如果查询的关键字是否等于一维数组中的值;return i;如果等于返回值i;return 0;反之算法结束;int ma
11、in ()函数调用定义以下的值使得以下的值可以执行以上的语句;int a;定义一个整型值a;a=search(array,35);将2赋值于搜索对象35的下标;if(a)如果a满足上述i的判断条件;printf(-查找的关键字35已经找到!它在表中的下标为%dn,a);输出查找成功提示语;else否则;printf(-该关键字不存在!n);输出查找失败提示语return 0;并且算法结束;实验半折查找41:输入输出结果囱I C:WINDOWS诂y3temW2cmcl.exE关键字,41已找到!该美魂字在表中的卜标为:5 请按任意键继续一一一#include定义函数库以便于后面的函数语句可以使用
12、;#define N 10定义一维数组的最大长度为N并且N的值为10;int arrayN = 8,15,19,26,23,41,47,52,64,90;定义一维数组的 10个数值;int search(int key, int array 口)定义搜索查询的关键字和查询的一维数组;int low=0;定义初始为0;int mid;定义中间值为整型;int high=N-1;定义数值高的值进行向前进一位;int ley=41;定义需要查找的值为41;while (lowkey)否则如果一维数组的中间值的大于所查询的关键字;high=mid-1;高的值赋值于中间值向前进一位;else否则;low=mid+1;将低值赋值于中间值前进一个值;return 0;返回值0算法结束;int main ()函数调用使得下面定义的数值可
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度木材行业节能减排技术改造合同范本8篇
- 2025年洗车场场地租赁合同:专业洗车服务协议范本3篇
- 2025版外架班组劳务分包及智慧工地合同2篇
- 碎石购买与工程预算控制2025年度合同2篇
- 2025版卫生间装修施工与环保材料采购合同2篇
- 羽绒制品企业发展战略咨询2025年度合同3篇
- 2025版图书馆特色馆藏建设采购合同3篇
- 2025年度高科技产品买卖合同书样本4篇
- D打印技术在建筑外立面设计的应用考核试卷
- 二零二五版4S店尊贵订车合同模板2篇
- 2025年山东浪潮集团限公司招聘25人高频重点提升(共500题)附带答案详解
- 2024年财政部会计法律法规答题活动题目及答案一
- 2025年江西省港口集团招聘笔试参考题库含答案解析
- (2024年)中国传统文化介绍课件
- 液化气安全检查及整改方案
- 《冠心病》课件(完整版)
- 2024年云网安全应知应会考试题库
- 公园保洁服务投标方案
- 光伏电站项目合作开发合同协议书三方版
- 2024年秋季新沪教版九年级上册化学课件 第2章 空气与水资源第1节 空气的组成
- 香港中文大学博士英文复试模板
评论
0/150
提交评论