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. 冲突处理方法----分离链接法

    1 前言 常用处理冲突的思路: 换个位置: 开放地址法 同一位置的冲突对象组织在一起:链地址法 2 分离链接法 分离链接法:将相应位置上冲突的所有关键词存储在同一个单链表中 举例说明最直接:设关键字序 ...

  2. Python与数据结构[4] - 散列表[1] - 分离链接法的 Python 实现

    分离链接法 / Separate Chain Hashing 前面完成了一个基本散列表的实现,但是还存在一个问题,当散列表插入元素冲突时,散列表将返回异常,这一问题的解决方式之一为使用链表进行元素的存 ...

  3. 【数据结构笔记40】哈希表冲突处理方法:开放地址法(线性探测、平方探测、双散列、再散列),分离链接法

    本次笔记内容: 11.3.1 开放定址法 11.3.2 线性探测 11.3.3 线性探测-字符串的例子 11.3.4 平方探测法 11.3.5 平方探测的实现 11.3.6 分离链接法 文章目录 冲突 ...

  4. 解决Hash冲突的方法

    虽然我们不希望发生冲突,但实际上发生冲突的可能性仍是存在的.当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时.冲突就难免会发 生.另外,当关键字的实际取值大于哈希表的长度时,而且表中 ...

  5. HashMap解决hash冲突的方法

    HashMap解决hash冲突的方法 博客分类: jvm虚拟机 在Java编程语言中,最基本的结构就是两种,一种是数组,一种是模拟指针(引用),所有的数据结构都可以用这两个基本结构构造,HashMap ...

  6. 冲突处理方法----开放定址法

    1 前言 常用处理冲突的思路: 换个位置: 开放地址法 同一位置的冲突对象组织在一起:链地址法 2 开放定址法(Open Addressing) 一旦产生了冲突(该地址已有其它元素),就按某种规则去寻 ...

  7. 6-23 分离链接法的删除操作函数 (20 分)

    试实现分离链接法的删除操作函数. 函数接口定义: bool Delete( HashTable H, ElementType Key ); 其中HashTable是分离链接散列表,定义如下: type ...

  8. 数据结构之哈希表的分离链接法java实现

    哈希表的分离链接法 原理 Hash Table可以看作是一种特殊的数组.他的原理基本上跟数组相同,给他一个数据,经过自己设置的哈希函数变换得到一个位置,并在这个位置当中放置该数据.哦对了,他还有个名字 ...

  9. 分离链接法的删除操作函数

    习题5.11 分离链接法的删除操作函数 (20 分) 试实现分离链接法的删除操作函数. 函数接口定义: bool Delete( HashTable H, ElementType Key ); 其中H ...

最新文章

  1. curl: (7) couldn‘t connect to host 解决方法
  2. 在GridView中添加按钮后,如何触发按钮的各种事件?
  3. PHP中不用第三个变量交换两个变量的值
  4. 居然是Firefox没有抛弃我们
  5. 【软考-软件设计师】总线结构
  6. 大话数据结构21 :关键路径
  7. oracle tns 代理配置_oracle数据库tns配置方法详解
  8. jpa 根据主键生成策略获取id_如何在使用JPA和Hibernate时选择id生成策略
  9. 光端机使用时出现了故障怎样定位和处理
  10. 25 To Life
  11. Python基础知识从hello world 开始(第三天)
  12. 设计模式总览及工厂模式详解
  13. leetcode---1728. 猫和老鼠 II
  14. PBOC规范研究之四、文件结构及访问
  15. 2021年安全员-A证考试技巧及安全员-A证
  16. MySQL之数据类型
  17. Schema Compare 使用手册
  18. 永远怀念左耳朵耗子陈皓——IT界的失去
  19. 第五天:了解越疆dobot机械臂,使用python,编写通过ros服务控制机械臂运动程序
  20. [SNA社会网络分析]基于R的ndtv、network包实现社会网络动态可视化

热门文章

  1. Java锁详解之改进读写锁StampedLock
  2. pdf拼版插件_pdf文件中的文字批量转曲的办法
  3. centos7点击桌面图标无反应_【问题帖】电脑不显示桌面图标和任务栏,只显示鼠标光标咋办?...
  4. layui上传报错会有哪些原因_数据丢失如何恢复?哪些原因会导致数据丢失
  5. 深入理解java枚举_深入学习java枚举的应用
  6. 交换机中流量监管、流量整形和接口限速是如何实现的
  7. 从零开始入门 K8s | K8s 安全之访问控制
  8. Mysql多表查询(案例3)
  9. 微机原理换行代码_微机原理实验保留最长行输入字符的程序
  10. goland创建一个不限长度的字节切片_Go语言入门必知教程-切片