河南工业大学实验报告_实验三查找和排序(一)——查找.pdfVIP

  • 3
  • 0
  • 约3.8千字
  • 约 5页
  • 2020-11-04 发布于天津
  • 举报

河南工业大学实验报告_实验三查找和排序(一)——查找.pdf

xxx 大学实验报告 课程名称 数据结构 实验项目 实验三 查找和排序 ( 一 ) ——查找 院 系 信息学院计类系 专业班级 计类 1501 姓 名 学 号 指导老师 日 期 批改日期 成 绩 一 实验目的 1.掌握哈希函数——除留余数法的应用; 2. 掌握哈希表的建立; 3. 掌握冲突的解决方法; 4. 掌握哈希查找算法的实现。 二 实验内容及要求 实验内容: 已知一组关键字 (19,14,23,1,68,20,84,27,55,11,10,79) ,哈希 函数定义为: H(key)=key MOD 13, 哈希表长为 m=16。实现该哈希表的散列,并 计算平均查找长度(设每个记录的查找概率相等) 。 实验要求: 1. 哈希表定义为定长的数组结构; 2. 使用线性探测再散列或链 地址法解决冲突; 3. 散列完成后在屏幕上输出数组内容或链表; 4. 输出等概率 查找下的平均查找长度; 5. 完成散列后,输入关键字完成查找操作,要分别测 试查找成功与不成功两种情况。 注意:不同解决冲突的方法会使得平均查找长度不同, 可尝试使用不同解决 冲突的办法,比较平均查找长度。 (根据完成情况自选,但至少能使用一种方法 解决冲突) 三 实验过程及运行结果 #include stdio.h #include stdlib.h #include string.h #define hashsize 16 #define q 13 int sign=2; typedef struct Hash { int date; // 值域 int sign; // 标记 }HashNode; void compare(HashNode H[],int p,int i,int key[]) // 线性冲突处理 { p++; if(H[p].sign!=0) { sign++; compare(H,p,i,key); } else { H[p].date=key[i]; H[p].sign=sign; sign=2; } } void Hashlist(HashNode H[],int key[]) { int p; for(int i=0;i12;i++) { p=key[i]%q; if(H[p].sign==0) { H[p].date=key[i]; H[p].sign=1; } else compare(H,p,i,key); } } int judge(HashNode H[],int num,int n) // 查找冲突处理 { n++; if(n=hashsize) return 0; if(H[n].date==num) { printf( 位置 \t

文档评论(0)

1亿VIP精品文档

相关文档