【数据结构】哈希表—C/C++实现

简介: 【数据结构】哈希表—C/C++实现



1. 哈希表

哈希表类似:

比如python中的字典用到的就是哈希表

2. 基本思路

哈希表(Hash Table),也称为散列表。基本思路是,设存储元素个数为n,设置长度为m(m>=n)的连续内存单元,以每个元素的关键字ki为自变量,通过哈希函数把 k 映射为内存单元的哈希地址h(ki),把该元素存储在此地址。

3. 哈希冲突

哈希冲突是指当两个关键字 ki 和 kj(i≠j)有ki≠kj,但h(ki)=h(kj)。

4. 哈希冲突的解决办法

开放寻址法:当发生哈希冲突时,在哈希表中找一个新的空闲位置存放元素。常见的探测序列包括线性探测法、平方探测法。

       线性探测法:从发生冲突的位置D开始,依次探测D的下一空闲地址(哈希表末尾的下

                             一个地址是表首地址 —mod 实现

      平方探测法:从发生冲突的位置D开始,来回探测D的前后空闲地址

拉链法:每个桶(槽位)都包含一个链表,用于存储所有映射到该桶的键-值对。当发生哈希冲突时,新的键-值对被添加到相应桶的数据结构中,而不会覆盖旧值。

参考链接:哈希讲解

参考链接:哈希讲解


致读者

非知之难,行之为难;非行之难,终之斯难

目录
相关文章
|
2月前
|
算法
数据结构-哈希表(二)
数据结构-哈希表(二)
30 0
|
2月前
|
设计模式 算法 搜索推荐
C++数据结构设计:理解并选择策略模式与模板特化
C++数据结构设计:理解并选择策略模式与模板特化
45 2
|
2月前
|
存储 安全 数据管理
探索C++中回调函数的数据结构和封装的权衡以及示例
探索C++中回调函数的数据结构和封装的权衡以及示例
74 4
|
2月前
|
存储 编译器 数据库
【C/C++ 数据结构 】线索二叉树全解析:从数学原理到C++实现
【C/C++ 数据结构 】线索二叉树全解析:从数学原理到C++实现
55 0
|
2月前
|
算法 C++ 开发者
【C/C++ 数据结构 】二叉树基本性质:对于任何一颗二叉树T,若其终端结点为n0 ,那么度数为2的结点数为n2。则n0=n2+1...
【C/C++ 数据结构 】二叉树基本性质:对于任何一颗二叉树T,若其终端结点为n0 ,那么度数为2的结点数为n2。则n0=n2+1...
16 0
|
7天前
|
存储 Serverless C++
【C++高阶(五)】哈希思想--哈希表&哈希桶
【C++高阶(五)】哈希思想--哈希表&哈希桶
|
15天前
|
存储 算法 安全
上机实验四 哈希表设计 西安石油大学数据结构
上机实验四 哈希表设计 西安石油大学数据结构
16 0
|
2月前
|
存储 缓存 Serverless
数据结构-哈希表(一)
哈希表(Hash Table),也称为散列表,是一种常见的数据结构,用于存储键值对。它通过将键映射到一个特定的索引位置来实现高效的数据访问和查找。
24 3
|
2月前
|
存储 算法 调度
【C/C++ 数据结构 优先队列】了解学习`std::priority_queue`的使用
【C/C++ 数据结构 优先队列】了解学习`std::priority_queue`的使用
42 3
|
2月前
|
存储 安全 测试技术
了解如何 在C++17 中实现 无锁数据结构
了解如何 在C++17 中实现 无锁数据结构
82 0