HashTable 解决碰撞(冲突)的方法 —— 分离链接法(separate chaining)
1. ListNode 及 HashTable 的类型声明
声明
typedef int ElementType; typedef unsigned int Index;struct ListNode; typedef struct ListNode* Position; struct HashTbl; typedef struct HashTbl* HashTable;HashTable InitHashTable(int TableSize); void DestroyHashTable(HashTable H); Position Find(ElementType Element, HashTable H); void Insert(ElementType Element, HashTable H);; ElementType Retrieve(Position P);
定义
struct ListNode{ElementType Element;Position Next; };typedef Position List;struct HashTbl {int TableSize;List* TheLists; };
2. HashTable 的构建
HashTable InitHashTable(int TableSize){HashTable H;if (TableSize < MinTableSize){Error(" ... ");return NULL;}H = (HashTable)malloc(sizeof(struct HashTbl));if (!H)FatalError("out of space !!!");H->TableSize = NextPrime(TableSize);H->TheLists = (List*)malloc(sizeof(struct ListNode)*H->TableSize);for (int i = 0; i < H->TableSize; ++i){H->TheLists[i] = (List)malloc(sizeof(struct ListNode));if (!H->TheLists[i])FatalError("");elseH->TheLists[i]->Next = NULL;}
}
3. 插入新的结点
void Insert(ElementType Key, HashTable H){Position Pos, NewCell;List L;Pos = Find(key, H);if (!Pos){NewCell = (Position)malloc(sizeof(struct ListNode));if (!NewCell)FatalError("");L = H->TheLists[Hash(Key, H->TableSize)];NewCell->Next = L->Next;// 插入在首部NewCell->Element = Key;L->Next = NewCell->Next;}
}
转载于:https://www.cnblogs.com/mtcnn/p/9423656.html
HashTable 解决碰撞(冲突)的方法 —— 分离链接法(separate chaining)相关推荐
- 冲突处理方法----分离链接法
1 前言 常用处理冲突的思路: 换个位置: 开放地址法 同一位置的冲突对象组织在一起:链地址法 2 分离链接法 分离链接法:将相应位置上冲突的所有关键词存储在同一个单链表中 举例说明最直接:设关键字序 ...
- Python与数据结构[4] - 散列表[1] - 分离链接法的 Python 实现
分离链接法 / Separate Chain Hashing 前面完成了一个基本散列表的实现,但是还存在一个问题,当散列表插入元素冲突时,散列表将返回异常,这一问题的解决方式之一为使用链表进行元素的存 ...
- 【数据结构笔记40】哈希表冲突处理方法:开放地址法(线性探测、平方探测、双散列、再散列),分离链接法
本次笔记内容: 11.3.1 开放定址法 11.3.2 线性探测 11.3.3 线性探测-字符串的例子 11.3.4 平方探测法 11.3.5 平方探测的实现 11.3.6 分离链接法 文章目录 冲突 ...
- 解决Hash冲突的方法
虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的.当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时.冲突就难免会发 生.另外,当关键字的实际取值大于哈希表的长度时,而且表中 ...
- HashMap解决hash冲突的方法
HashMap解决hash冲突的方法 博客分类: jvm虚拟机 在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap ...
- 冲突处理方法----开放定址法
1 前言 常用处理冲突的思路: 换个位置: 开放地址法 同一位置的冲突对象组织在一起:链地址法 2 开放定址法(Open Addressing) 一旦产生了冲突(该地址已有其它元素),就按某种规则去寻 ...
- 6-23 分离链接法的删除操作函数 (20 分)
试实现分离链接法的删除操作函数. 函数接口定义: bool Delete( HashTable H, ElementType Key ); 其中HashTable是分离链接散列表,定义如下: type ...
- 数据结构之哈希表的分离链接法java实现
哈希表的分离链接法 原理 Hash Table可以看作是一种特殊的数组.他的原理基本上跟数组相同,给他一个数据,经过自己设置的哈希函数变换得到一个位置,并在这个位置当中放置该数据.哦对了,他还有个名字 ...
- 分离链接法的删除操作函数
习题5.11 分离链接法的删除操作函数 (20 分) 试实现分离链接法的删除操作函数. 函数接口定义: bool Delete( HashTable H, ElementType Key ); 其中H ...
最新文章
- curl: (7) couldn‘t connect to host 解决方法
- 在GridView中添加按钮后,如何触发按钮的各种事件?
- PHP中不用第三个变量交换两个变量的值
- 居然是Firefox没有抛弃我们
- 【软考-软件设计师】总线结构
- 大话数据结构21 :关键路径
- oracle tns 代理配置_oracle数据库tns配置方法详解
- jpa 根据主键生成策略获取id_如何在使用JPA和Hibernate时选择id生成策略
- 光端机使用时出现了故障怎样定位和处理
- 25 To Life
- Python基础知识从hello world 开始(第三天)
- 设计模式总览及工厂模式详解
- leetcode---1728. 猫和老鼠 II
- PBOC规范研究之四、文件结构及访问
- 2021年安全员-A证考试技巧及安全员-A证
- MySQL之数据类型
- Schema Compare 使用手册
- 永远怀念左耳朵耗子陈皓——IT界的失去
- 第五天:了解越疆dobot机械臂,使用python,编写通过ros服务控制机械臂运动程序
- [SNA社会网络分析]基于R的ndtv、network包实现社会网络动态可视化
热门文章
- Java锁详解之改进读写锁StampedLock
- pdf拼版插件_pdf文件中的文字批量转曲的办法
- centos7点击桌面图标无反应_【问题帖】电脑不显示桌面图标和任务栏,只显示鼠标光标咋办?...
- layui上传报错会有哪些原因_数据丢失如何恢复?哪些原因会导致数据丢失
- 深入理解java枚举_深入学习java枚举的应用
- 交换机中流量监管、流量整形和接口限速是如何实现的
- 从零开始入门 K8s | K8s 安全之访问控制
- Mysql多表查询(案例3)
- 微机原理换行代码_微机原理实验保留最长行输入字符的程序
- goland创建一个不限长度的字节切片_Go语言入门必知教程-切片