This commit is contained in:
krahets
2023-02-26 19:53:32 +08:00
parent 62d7f2c85d
commit d5d3a29676
31 changed files with 179 additions and 1 deletions

View File

@ -1637,6 +1637,8 @@
<h2 id="622">6.2.2. &nbsp; 链式地址<a class="headerlink" href="#622" title="Permanent link">&para;</a></h2>
<p>在原始哈希表中,桶内的每个地址只能存储一个元素(即键值对)。<strong>考虑将单个元素转化成一个链表,将所有冲突元素都存储在一个链表中</strong></p>
<p><img alt="链式地址" src="../hash_collision.assets/hash_collision_chaining.png" /></p>
<p align="center"> Fig. 链式地址 </p>
<p>链式地址下,哈希表操作方法为:</p>
<ul>
<li><strong>查询元素</strong>:先将 key 输入到哈希函数得到桶内索引,即可访问链表头结点,再通过遍历链表查找对应 value 。</li>
@ -1660,6 +1662,8 @@
<li>若遇到空位,则说明查找键值对不在哈希表中;</li>
</ol>
<p><img alt="线性探测" src="../hash_collision.assets/hash_collision_linear_probing.png" /></p>
<p align="center"> Fig. 线性探测 </p>
<p>线性探测存在以下缺陷:</p>
<ul>
<li><strong>不能直接删除元素</strong>。删除元素会导致桶内出现一个空位,在查找其他元素时,该空位有可能导致程序认为元素不存在(即上述第 <code>2.</code> 种情况)。因此需要借助一个标志位来标记删除元素。</li>