- 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)