<aside> 💡

算法的设计取决于数据的逻辑结构,而算法的实现依赖于数据的存储结构。

</aside>

数据结构

<aside> 💡 数据结构是指计算机中存储、组织数据的方式。

</aside>

在计算机中,数据元素并不是孤立、杂乱无序的,而是具有内在联系的数据集合。

数据元素之间存在的一种或多种特定关系,也就是数据的组织形式。

因此,可以把数据结构看成是带结构的数据元素的集合。

数据的逻辑结构

逻辑结构是指数据元素之间的逻辑关系,即从逻辑关系上描述数据。它与数据的存储无关,是独立于计算机的。

一个逻辑结构可以用一组数据结点和一个关系集合R来表示:(K, R)。其中,K是由有限个结点组成的集合,R是一组定义在集合K上的二元关系。

根据关系集R中关系r的分类,结点的结构一般可分为线性结构、树形结构和图结构。这种结构分类揭示了枯燥数据之间的相互关系,给出了关系本身的一般性质,对于理解数据结构以及正确设计算法都是很重要的。

1. 线性结构

线性结构在程序设计中应用最为广泛。它是一种满足全序性和单索性等约束条件的有向关系。

全序性是指,线性结构的全部结点两两皆可以比较前后;

单索性是指,每一个结点 x 都可以存在唯一的一个直接后继结点 y。

2. 树形结构

树形结构,也称树结构,是一种层次结构,其关系 r 称为层次关系或“父子关系”。

树形结构的最高层次的结点称为根结点(root),只有它没有父结点。

树形结构存在着很多变种,如二叉树、堆结构等,它们都有各自独特的应用。

3. 图形结构

图结构也称网络结构,其关系 r 没有任何约束。