This commit is contained in:
krahets
2023-08-27 23:41:10 +08:00
parent 8c9cf3f087
commit 016f13d882
66 changed files with 262 additions and 270 deletions

View File

@ -3517,7 +3517,7 @@
<p align="center"> 图 5-1 &nbsp; 栈的先入后出规则 </p>
<h2 id="511">5.1.1 &nbsp; 栈常用操作<a class="headerlink" href="#511" title="Permanent link">&para;</a></h2>
<p>栈的常用操作如表 5-1 所示,具体的方法名需要根据所使用的编程语言来确定。在此,我们以常见的 <code>push()</code> , <code>pop()</code> , <code>peek()</code> 命名为例。</p>
<p>栈的常用操作如表 5-1 所示,具体的方法名需要根据所使用的编程语言来确定。在此,我们以常见的 <code>push()</code><code>pop()</code><code>peek()</code> 命名为例。</p>
<p align="center"> 表 5-1 &nbsp; 栈的操作效率 </p>
<div class="center-table">
@ -5134,7 +5134,7 @@
<p><strong>时间效率</strong></p>
<p>在基于数组的实现中,入栈和出栈操作都是在预先分配好的连续内存中进行,具有很好的缓存本地性,因此效率较高。然而,如果入栈时超出数组容量,会触发扩容机制,导致该次入栈操作的时间复杂度变为 <span class="arithmatex">\(O(n)\)</span></p>
<p>在链表实现中,链表的扩容非常灵活,不存在上述数组扩容时效率降低的问题。但是,入栈操作需要初始化节点对象并修改指针,因此效率相对较低。不过,如果入栈元素本身就是节点对象,那么可以省去初始化步骤,从而提高效率。</p>
<p>综上所述,当入栈与出栈操作的元素是基本数据类型<code>int</code> , <code>double</code> )时,我们可以得出以下结论</p>
<p>综上所述,当入栈与出栈操作的元素是基本数据类型时,例<code>int</code> <code>double</code> ,我们可以得出以下结论</p>
<ul>
<li>基于数组实现的栈在触发扩容时效率会降低,但由于扩容是低频操作,因此平均效率更高。</li>
<li>基于链表实现的栈可以提供更加稳定的效率表现。</li>