线性探测法的查找函数 (20 分)
6-22 线性探测法的查找函数 (20 分)
试实现线性探测法的查找函数。
函数接口定义:
Position Find( HashTable H, ElementType Key );
其中HashTable是开放地址散列表,定义如下:
#define MAXTABLESIZE 100000 /* 允许开辟的最大散列表长度 */
typedef int ElementType; /* 关键词类型用整型 */
typedef int Index; /* 散列地址类型 */
typedef Index Position; /* 数据所在位置与散列地址是同一类型 */
/* 散列单元状态类型,分别对应:有合法元素、空单元、有已删除元素 */
typedef enum { Legitimate, Empty, Deleted } EntryType;typedef struct HashEntry Cell; /* 散列表单元类型 */
struct HashEntry{ElementType Data; /* 存放元素 */EntryType Info; /* 单元状态 */
};typedef struct TblNode *HashTable; /* 散列表类型 */
struct TblNode { /* 散列表结点定义 */int TableSize; /* 表的最大长度 */Cell *Cells; /* 存放散列单元数据的数组 */
};
函数Find应根据裁判定义的散列函数Hash( Key, H->TableSize )从散列表H中查到Key的位置并返回。如果Key不存在,则返回线性探测法找到的第一个空单元的位置;若没有空单元,则返回ERROR。
裁判测试程序样例:
#include <stdio.h>#define MAXTABLESIZE 100000 /* 允许开辟的最大散列表长度 */
typedef int ElementType; /* 关键词类型用整型 */
typedef int Index; /* 散列地址类型 */
typedef Index Position; /* 数据所在位置与散列地址是同一类型 */
/* 散列单元状态类型,分别对应:有合法元素、空单元、有已删除元素 */
typedef enum { Legitimate, Empty, Deleted } EntryType;typedef struct HashEntry Cell; /* 散列表单元类型 */
struct HashEntry{ElementType Data; /* 存放元素 */EntryType Info; /* 单元状态 */
};typedef struct TblNode *HashTable; /* 散列表类型 */
struct TblNode { /* 散列表结点定义 */int TableSize; /* 表的最大长度 */Cell *Cells; /* 存放散列单元数据的数组 */
};HashTable BuildTable(); /* 裁判实现,细节不表 */
Position Hash( ElementType Key, int TableSize )
{return (Key % TableSize);
}#define ERROR -1
Position Find( HashTable H, ElementType Key );int main()
{HashTable H;ElementType Key;Position P;H = BuildTable(); scanf("%d", &Key);P = Find(H, Key);if (P==ERROR)printf("ERROR: %d is not found and the table is full.\n", Key);else if (H->Cells[P].Info == Legitimate)printf("%d is at position %d.\n", Key, P);elseprintf("%d is not found. Position %d is returned.\n", Key, P);return 0;
}/* 你的代码将被嵌在这里 */
输入样例1:(注:-1表示该位置为空。下同。)
11
11 88 21 -1 -1 5 16 7 6 38 10
38
输出样例1:
38 is at position 9.
输入样例2:
11
11 88 21 -1 -1 5 16 7 6 38 10
41
输出样例2:
41 is not found. Position 3 is returned.
输入样例3:
11
11 88 21 3 14 5 16 7 6 38 10
41
输出样例3:
ERROR: 41 is not found and the table is full.
Position Find( HashTable H, ElementType Key ){Position p0,p;int Cnum=0;//冲突数p=p0=Hash(Key,H->TableSize);while(H->Cells[p].Info!=Empty&&H->Cells[p].Data!=Key){Cnum++;if(Cnum==MAXTABLESIZE){return ERROR;}p=(p0+Cnum)%H->TableSize; }return p;
}
线性探测法的查找函数 (20 分)相关推荐
- 线性探测法的查找函数
线性探测法:如遇到了冲突,用pos+i(i=1,2,3-)的方式来找到新的未用过的位置. 查找时,如果没有,我们的结束条件就时i>=表的长度. 这样缺点也很突出,就是很多元素会扎堆的出现,降低了 ...
- 7-1 查找书籍 (20 分)给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息
7-1 查找书籍 (20 分) 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价. 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息.每本 ...
- 7-7-1 查找书籍 (20 分)
7-7-1 查找书籍 (20 分) 给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价. 输入格式: 输入第一行给出正整数n(<10),随后给出n本书的信息. ...
- 6-4 jmu-Java-m06 根据姓名以及电话号码查找联系人 (20分)
6-4 jmu-Java-m06 根据姓名以及电话号码查找联系人 (20分) 该程序包含: Person类 : 属性:int id, String name, String phoneNumber,S ...
- 习题9-4 查找书籍 (20分)PTA给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价。
给定n本书的名称和定价,本题要求编写程序,查找并输出其中定价最高和最低的书的名称和定价. 输入格式:输入第一行给出正整数n(<10),随后给出n本书的信息.每本书在一行中给出书名,即长度不超过3 ...
- 实验11-1-8 查找子串 (20分)
本题要求实现一个字符串查找的简单函数. 函数接口定义: char *search( char *s, char *t ); 函数search在字符串s中查找子串t,返回子串t在s中的首地址.若未找到, ...
- 6-23 分离链接法的删除操作函数 (20 分)
试实现分离链接法的删除操作函数. 函数接口定义: bool Delete( HashTable H, ElementType Key ); 其中HashTable是分离链接散列表,定义如下: type ...
- 【数据结构】哈希表——线性探测法、链地址法、查找成功、查找不成功的平均长度
一.哈希表 1.概念 哈希表(Hash Table)也叫散列表,是根据关键码值(Key Value)而直接进行访问的数据结构.它通过把关键码值映射到哈希表中的一个位置来访问记录,以加快查找的速度.这个 ...
- 【除留余数法定义hash函数+线性探测法解决hash冲突】数据结构实验之查找七:线性之哈希表
Think: 1知识点:除留余数法定义hash函数+线性探测法解决hash冲突 数据结构实验之查找七:线性之哈希表 Time Limit: 1000MS Memory Limit: 65536KB P ...
最新文章
- 活动报名 | “认知神经科学”助力人工智能突围的方法路径
- FreeSWITCH在呼叫失败的情况下如何播放语音提示
- IT创业迷魂圈:不要画饼充饥
- nginx各个版本下载地址
- 剑桥少儿英语预备级教案(上) unit8 How many doors?
- CVPR 2019 | APDrawingGAN:人脸秒变艺术肖像画
- 删除排序链表中的重复元素Python解法
- Profibus-DP光端机产品功能特点及技术参数详解
- 广州python平均薪资_11 月全国程序员平均工资出炉,看看的你得薪资跟上平均水平了吗。...
- 无法读取内存属于错误吗_索佳全站仪错误信息讲解
- localStorage存储数组以及取数组方法。
- harbor 多端口_Harbor使用 -- 修改80端口
- systemtap的一些总结
- 录音文件怎么转换成文字呢?
- 显卡4k性能测试软件,碰上UHD都得跪 AN新一代显卡4K对比横评
- 渗透工具-masscan
- Kconfig使用详解
- matlab积分器的工作原理,[转载]Simulink积分器详解(图)
- UML 基本模型元素
- 地理信息系统(Geographic Information System或 Geo-Information system,GIS)