一、概述
什么是数据结构:
数据:由有限的符号(比如,"0"和"1",具有其自己的结构、操作、和相应的语义)组成的元素的集合。
结构:元素之间的关系的集合。
数据结构:信息的一种组织方式,其目的是为了提高算法的效率,它通常与一组算法的集合相对应,通过这组算法集合可以对数据结构中的数据进行某种操作。它用来反映一个数据的内部构成,即一个数据由那些成分数据构成,以什么方式构成,呈什么结构。
数据结构的构成:
数据结构分为逻辑上的数据结构和物理上的数据结构。逻辑上的数据结构反映成分数据之间的逻辑关系即逻辑结构。物理上的数据结构反映成分数据在计算机内部的存储安排即存储结构。数据结构是数据存在的形式。
MarkDown代码: ``` graph TB A[数据结构]-->B[逻辑结构] A[数据结构]-->C[存储结构] B[逻辑结构]-->D[集合结构] B[逻辑结构]-->F[线性结构] B[逻辑结构]-->G[树状结构] B[逻辑结构]-->H[网络结构] C[存储结构]-->E[顺序存储] C[存储结构]-->I[链式存储] C[存储结构]-->J[索引存储] C[存储结构]-->K[散列存储] ```
逻辑结构:
⑴集合结构。在集合结构中,数据元素间的关系是“属于同一个集合”。集合是元素关系极为松散的一种结构。
⑵线性结构。该结构的数据元素之间存在着一对一的关系。
⑶树型结构。该结构的数据元素之间存在着一对多的关系。
⑷图形结构。该结构的数据元素之间存在着多对多的关系,图形结构也称作网状结构。
存储结构:
⑴顺序存储结构:把逻辑上相邻的节点存储在物理位置上相邻的存储单元中,结点之间的逻辑关系由存储单元的邻接关系来体现。由此得到的存储结构为顺序存储结构。
优点:是节省存储空间,因为分配给数据的存储单元全用存放结点的数据,结点之间的逻辑关系没有占用额外的存储空间。采用这种方法时,可实现对结点的随机存取,即每一个结点对应一个序号,由该序号可以直接计算出来结点的存储地址。但顺序存储方法的主要缺点是不便于修改,对结点的插入、删除运算时,可能要移动一系列的结点。 缺点:插入和删除操作需要移动元素,效率较低。
⑵链式存储结构:在计算机中用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的).
特点: 1、比顺序存储结构的存储密度小 (每个节点都由数据域和指针域组成,所以相同空间内假设全存满的话顺序比链式存储更多)。 2、逻辑上相邻的节点物理上不必相邻。 3、插入、删除灵活 (不必移动节点,只要改变节点中的指针)。 4、查找结点时链式存储要比顺序存储慢。 5、每个结点是由数据域和指针域组成。
⑶索引存储结构:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。
⑷散列存储结构:根据结点的关键字直接计算出该结点的存储地址。