“数据结构”是研究各种数据的特性以及数据之间存在的关系，进而根据实际应用的要求，合理地组织和存储数据，设计出相应的算法。
数据是对客观事物的符号表示，
数据元素（节点）：数据的基本单位，在程序中通常作为一个整体进行考虑和处理。一个数据元素可以由若干个数据项组成。
数据项：具有独立含义的最小标识单位。例如，一条数据记录可以称为一个数据元素，数据记录的某个字段就是一个数据项。
数据的逻辑结构：数据元素与数据元素之间的逻辑关系。可以分为四类基本结构：
数据的逻辑结构可以用以下的二元组来表示：
其中，D是数据节点的有限集合，R是D上的关系的有限集合，其中每个关系都是从D到D的关系。
数据在计算机中的存储表示称为数据的存储结构，又称物理结构。
数据存储到计算机中即要求存储各节点的数值，又要存储结点与结点之间的逻辑关系。
以下介绍四种基本的存储结构：顺序存储、链式存储、索引存储、散列存储。
顺序存储结构是把逻辑上相邻的元素存储在一组连续的存储单元中，其元素之间的逻辑关系由存储单元地址间的关系隐含表示。
优点：节省存储空间，只需要存储数据结点，并不需要存储结点的逻辑关系。
缺点：不便于修改，插入和删除某个结点需要修改一系列的结点。
链式存储结构，给每个结点增加指针字段，用于存放临近结点的存储地址，每个结点占用两个连续的存储单元，一个存放数据，一个存放临近结点（前驱/后继结点）的地址。
优点：便于修改，修改时只需要修改结点的指针字段，不需要移动其他结点。
缺点：占用存储空间，因为需要存储结点之间的逻辑关系。因为结点之间不一定相邻，因此不能对结点进行随机访问。
索引存储结构即在存储结点的同时，增加索引表，索引表的索引项为：（关键字，地址），关键字标识结点，地址为结点的指针。各结点的地址在索引表中是依次排列的。
散列存储结构是根据结点的值确定结点的存储地址。以结点作为自变量，通过散列函数算出结果i，再把i作为结点的存储地址。
优点：查找速度快，适用于快速查找和插入的场景。
缺点：只存结点数据，不存结点之间的关系。
数据的运算就是施加于数据的操作，例如对一张表进行增删改查操作，一般数据结构中的运算除了加减乘除外还会涉及算法问题。
按某种逻辑关系组成的数据元素，按一定的存储方式存储于计算机中，并在其上定义了一个运算的集合，称为一个数据结构。
数据类型是程序设计语言中对数据结构的实现，数据类型明显或隐含地规定了数据的取值范围、存储方式及允许进行的运算。
算法是对特定问题求解步骤的描述，是指令的有限序列，每条指令包含一个或多个操作。
算法分析主要涉及时间复杂度和空间复杂度。一般情况我们讨论时间复杂度。
时间复杂度的关系如下：