mirror of
https://github.com/krahets/hello-algo.git
synced 2025-07-27 20:32:46 +08:00
deploy
This commit is contained in:
@ -3517,7 +3517,7 @@
|
||||
<p align="center"> 图 5-1 栈的先入后出规则 </p>
|
||||
|
||||
<h2 id="511">5.1.1 栈常用操作<a class="headerlink" href="#511" title="Permanent link">¶</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 栈的操作效率 </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>
|
||||
|
Reference in New Issue
Block a user