实验五查找分析和总结.pdfVIP

  • 47
  • 0
  • 约2.35千字
  • 约 5页
  • 2021-11-10 发布于上海
  • 举报
山东工商学院 《数据结构》实验指导及报告书 2012 / 2013 学年第 上 学期 姓名: 学号: 班级: 指导教师: 信电学院 2012 实验五查找 一、实验目的 1、掌握查找表、动态查找表、静态查找表和平均查找长度的概念。 2、掌握线性表中顺序查找和折半查找的方法。 3、学会哈希函数的构造方法,处理冲突的机制以及哈希表的查找。 二、实验预习 说明以下概念 1、顺序查找: 2、折半查找: 3、哈希函数: 4、冲突及处理: 三、实验内容和要求 依据顺序查找算法和折半查找算法的特点,对下面的两个查找表选择一个合适的算法, 设计出完整的 C 源程序。并完成问题: 查找表 1:{8 , 15,19,26 ,33 ,41 ,47 ,52 ,64 ,90} ,查找 key=41 查找表 2 :{12 , 76,29 , 15,62 ,35 ,33 ,89 ,48 ,20} ,查找 key=35 查找 key=41 的算法:折半查找比较次数: 查找 key=35 的算法:顺序查找比较次数: 顺序查找算法算法实现代码 #includestdio.h #includestdlib.h intmain(){ intn,s,q,i,k;//n 为输入的元素个数, s 为所查找的元素, k 为该元素在数组中的位置 inta[100]; printf(inputnumber:); scanf(%d,n); for(i=1;in+1;i++){ printf(inputNO%d:,i); scanf(%d,q); a[i]=q; } printf(inputelement:); scanf(%d,s); for(i=n;i0;i--){ a[0]=s; if(a[i]==s){ k=i; break; } } if(k!=0)printf(thenumberis:%d,k); elseprintf(notexist!); return0; } 折半查找算法算法实现代码 #includestdio.h #includestdlib.h #defineINIT_SIZE5 typedefintElem; typedefstruct{ intTsize; Elem*list; intlength; }SSTable; intsearch_l(Eleme,SSTableL); voidcreate_l(SSTable*L,intn); intsearch_l(Eleme,SSTableL){ intlow,high,mid; low=1;high=L.length; while(low=high){ mid=(high+low)/2; if(L.list[mid]==e)returnmid; elseif(L.list[mid]e)high=mid-1; elselow=mid+1; } return0; } voidcreate_l(SSTable*L,intn){ inti; L-length=n; L-Tsize=INIT_SIZE; L-list=(Elem*)malloc(INIT_SIZE*sizeof(Elem)); for(;;){ if(L-length=L-Tsize){ L-list=(Elem*)malloc((INIT_SIZE+L-Tsize)*sizeof(Elem)); L-Tsize=L-Tsize+INIT_SIZE; }elsebreak; } for(i=1;i=L-length;i++){ intq; printf(inputvalueofNO%d:,i); scanf(%d,q); L-list[i]=q; }return0; } intmain() { intn,s,k; SSTableList; printf(inputtheamountoflis

文档评论(0)

1亿VIP精品文档

相关文档