This commit is contained in:
krahets
2023-12-02 06:24:11 +08:00
parent 5783c402bf
commit d20d8b3ee1
107 changed files with 1685 additions and 1745 deletions

View File

@@ -3385,7 +3385,7 @@
<h3 id="1">1. &nbsp; 重点回顾<a class="headerlink" href="#1" title="Permanent link">&para;</a></h3>
<ul>
<li>栈是一种遵循先入后出原则的数据结构,可通过数组或链表来实现。</li>
<li>时间效率角度看,栈的数组实现具有较高的平均效率,但在扩容过程中,单次入栈操作的时间复杂度会劣化至 <span class="arithmatex">\(O(n)\)</span> 。相比之下,基于链表实现的栈具有更为稳定的效率表现。</li>
<li>时间效率方面,栈的数组实现具有较高的平均效率,但在扩容过程中,单次入栈操作的时间复杂度会劣化至 <span class="arithmatex">\(O(n)\)</span> 。相比之下,栈的链表实现具有更为稳定的效率表现。</li>
<li>在空间效率方面,栈的数组实现可能导致一定程度的空间浪费。但需要注意的是,链表节点所占用的内存空间比数组元素更大。</li>
<li>队列是一种遵循先入先出原则的数据结构,同样可以通过数组或链表来实现。在时间效率和空间效率的对比上,队列的结论与前述栈的结论相似。</li>
<li>双向队列是一种具有更高自由度的队列,它允许在两端进行元素的添加和删除操作。</li>
@@ -3393,7 +3393,7 @@
<h3 id="2-q-a">2. &nbsp; Q &amp; A<a class="headerlink" href="#2-q-a" title="Permanent link">&para;</a></h3>
<div class="admonition question">
<p class="admonition-title">浏览器的前进后退是否是双向链表实现?</p>
<p>浏览器的前进后退功能本质上是“栈”的体现。当用户访问一个新页面时,该页面会被添加到栈顶;当用户点击后退按钮时,该页面会从栈顶弹出。使用双向队列可以方便实现一些额外操作,这个在双向队列章节有提到。</p>
<p>浏览器的前进后退功能本质上是“栈”的体现。当用户访问一个新页面时,该页面会被添加到栈顶;当用户点击后退按钮时,该页面会从栈顶弹出。使用双向队列可以方便实现一些额外操作,这个在双向队列章节有提到。</p>
</div>
<div class="admonition question">
<p class="admonition-title">在出栈后,是否需要释放出栈节点的内存?</p>
@@ -3401,7 +3401,7 @@
</div>
<div class="admonition question">
<p class="admonition-title">双向队列像是两个栈拼接在了一起,它的用途是什么?</p>
<p>双向队列就像是栈和队列的组合,或者是两个栈拼在了一起。它表现的是栈 + 队列的逻辑,因此可以实现栈与队列的所有应用,并且更加灵活。</p>
<p>双向队列就像是栈和队列的组合,或两个栈拼在了一起。它表现的是栈 + 队列的逻辑,因此可以实现栈与队列的所有应用,并且更加灵活。</p>
</div>
<div class="admonition question">
<p class="admonition-title">撤销undo和反撤销redo具体是如何实现的</p>