数据结构由 逻辑结构、存储结构、基本操作 三方面构成。
一、逻辑结构:用来描述数据结点之间的逻辑关系
数据结点:就是基本的数据类型或者复杂的数据类型
逻辑结构主要分为:
a.线性结构(Linear Structure)
特点:每个结点在线性关系(也叫前驱关系)上最多只有一个前驱结点和一个后继结点
ps:最多只有一个,三种情况:只有前驱、只有后继、有一个前驱也有一个后继
b.树形结构(Tree Structure)
起始位置(只有后继结点)的结点叫Root,末梢(只有前驱结点)的结点叫Leaf。这种结构里的关系叫层次关系。
特点:除了root和leaf的其他结点只有一个前驱结点,但可以有很多后继结点。
c.图结构(Graph Structure)
没有什么约束的复杂网状结构
二、储存结构:一套逻辑结构在计算机中物理结构的映射。(怎么把你的逻辑关系储存在计算机中
常用的四种方法:
1.顺序储存:如数组的储存方法,存放数据的地址相连,而逻辑关系就是存储单元间的自然关系。
2.链接储存:如链表的储存方法,要求每一个结点占用一片连续的存储区域,这片区域又分为数据域和指针域,数据域顾名思义就是存储数据,指针域存放指向前驱或者后继结点的指针(单链表就只有后继指针,双链表都有),当然,一个结点的指针域也可以有多个的指针指向多个后继结点。
3.索引储存:除了数据对象,还要建立一个索引表,让数据对象中的每一个数据元素都有唯一的关键字来进行标识,再由该关键字和对应的数据元素的地址构成一个索引项,存入索引表。
4.散列(哈希)储存:是对索引储存的扩展。主要思想是用结点的关键码来确定该结点的储存地址。如何来确定呢?就需要用设计好的散列函数(Hash Function)的关系使关键码映射到存储空间的地址,再把结点存入存储单元中。
一些理解上注意的点:
1.在链式储存结构中,每个结点有多少个后继就有多少个指针?
错,这里容易被忽略了指向前驱结点的指针
2.关于存储密度
存储密度=数据占用的空间 / 整个结构占用的空间 ,所以链式储存因要储存指针所以其存储密度要小于顺序存储。