多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] ### **冲突(collision)定义** ***** 当有两个或以上数量的键被分配到了哈希表数组的同一个索引上面时,我们称这些键发生了冲突(collision)。 ### **哈希冲突解决方案** ***** **链地址法**:每个哈希表节点都有一个next指针,多个哈希表节点可以用next指针构成一个单向链表,被分配到同一个索引上的多个节点可以用这个单向链表连接起来,这就解决了键冲突的问题。 **eg**:要将键值对k2和v2添加到图4-6所示的哈希表里面 ![GPRIC4.png](https://s1.ax1x.com/2020/03/27/GPRIC4.png) 计算得出k2的索引值为2,那么键k1和k2将产生冲突,而解决冲突的办法就是使用next指针将键k2和k1所在的节点连接起来: ![GPWS8H.png](https://s1.ax1x.com/2020/03/27/GPWS8H.png) ### **知识点** ***** 因为dictEntry节点组成的链表没有指向链表表尾的指针,所以为了速度考虑,程序总是将新节点添加到链表的表头位置(复杂度为O(1)),排在其他已有节点的前面。