This commit is contained in:
krahets
2023-04-08 04:08:33 +08:00
parent 54b72a3ac9
commit c6da3ca087
7 changed files with 44 additions and 48 deletions

View File

@ -1740,10 +1740,10 @@
<h1 id="32">3.2. &nbsp; 数据结构分类<a class="headerlink" href="#32" title="Permanent link">&para;</a></h1>
<p>数据结构主要可根据「逻辑结构」和「物理结构」两种角度进行分类。</p>
<p>数据结构可以从逻辑结构物理结构两个维度进行分类。</p>
<h2 id="321">3.2.1. &nbsp; 逻辑结构:线性与非线性<a class="headerlink" href="#321" title="Permanent link">&para;</a></h2>
<p><strong>「逻辑结构」反映了数据之间的逻辑关系</strong>。数组和链表数据按照顺序依次排列,反映了数据间的线性关系;树从顶至底按层排列,反映了祖先与后代之间的派生关系;图由结点和边成,反映了复杂网络关系。</p>
<p>我们一般将逻辑结构分为「线性」和「非线性」两种。“线性”这个概念很直观,即表明数据在逻辑关系上是排成一条线的;而如果数据之间的逻辑关系是非线性的(例如网状或树状的),那么就是非线性数据结构。</p>
<p><strong>「逻辑结构」揭示了数据元素之间的逻辑关系</strong>数组和链表中,数据按照顺序依次排列,体现了数据间的线性关系;而在树中,数据从顶部向下按层排列,表现出祖先与后代之间的派生关系;图由结点和边成,反映了复杂网络关系。</p>
<p>逻辑结构通常分为「线性」和「非线性」两类。线性结构比较直观,指数据在逻辑关系上呈线性排列;非线性结构则相反,呈非线性排列,例如网状或树状结构。</p>
<ul>
<li><strong>线性数据结构</strong>:数组、链表、栈、队列、哈希表;</li>
<li><strong>非线性数据结构</strong>:树、图、堆、哈希表;</li>
@ -1754,21 +1754,21 @@
<h2 id="322">3.2.2. &nbsp; 物理结构:连续与离散<a class="headerlink" href="#322" title="Permanent link">&para;</a></h2>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>若感到阅读困难,建议先看完下个章节「数组与链表」,再回过头来理解物理结构的含义。</p>
<p>如若阅读起来有困难,建议先阅读下一章“数组与链表”,然后再回头理解物理结构的含义。</p>
</div>
<p><strong>「物理结构」反映了数据在计算机内存中的存储方式</strong>。从本质上看,分别是 <strong>数组的连续空间存储</strong><strong>链表的离散空间存储</strong>。物理结构从底层决定了数据的访问、更新、增删等操作方法,在时间效率和空间效率方面呈现出此消彼长的特</p>
<p><strong>「物理结构」体现了数据在计算机内存中的存储方式</strong>,可以分为数组的连续空间存储和链表的离散空间存储。物理结构从底层决定了数据的访问、更新、增删等操作方法,同时在时间效率和空间效率方面呈现出互补的特</p>
<p><img alt="连续空间存储与离散空间存储" src="../classification_of_data_structure.assets/classification_phisical_structure.png" /></p>
<p align="center"> Fig. 连续空间存储与离散空间存储 </p>
<p><strong>所有数据结构都是基于数组、链表、或两者组合实现的</strong>。例如栈和队列既可以使用数组实现也可以使用链表实现,而例如哈希表,其实现同时包含数组和链表。</p>
<p><strong>所有数据结构都是基于数组、链表或二者的组合实现的</strong>。例如栈和队列既可以使用数组实现也可以使用链表实现;而哈希表的实现可能同时包含数组和链表。</p>
<ul>
<li><strong>基于数组可实现</strong>:栈、队列、哈希表、树、堆、图、矩阵、张量(维度 <span class="arithmatex">\(\geq 3\)</span> 的数组)等;</li>
<li><strong>基于链表可实现</strong>:栈、队列、哈希表、树、堆、图等;</li>
</ul>
<p>基于数组实现的数据结构也被称为「静态数据结构」,这意味着数据结构在在被初始化后长度不可变。相地,基于链表实现的数据结构被称为「动态数据结构」,数据结构在初始化后,我们也可以在程序运行中修改其长度</p>
<p>基于数组实现的数据结构也被称为「静态数据结构」,这意味着此类数据结构在初始化后长度不可变。相对应地,基于链表实现的数据结构被称为「动态数据结构」,这类数据结构在初始化后,可以在程序运行过程中对其长度进行调整</p>
<div class="admonition tip">
<p class="admonition-title">Tip</p>
<p>数组与链表是其他所有数据结构的“底层积木”,建议读者一定要多花些时间了解</p>
<p>数组与链表是其他所有数据结构的“底层积木”,建议读者投入更多时间深入了解这两种基本数据结构</p>
</div>