数据结构分类
- 线性结构
- 线性表
- 非线性结构
- 树
- 图
- 集合
线性结构
定义:数据结构中的元素存在一对一的对应关系,有唯一的首位,并且每个数据的上线衔接是唯一的。
常见的顺序结构有:线性表、栈、队列、双队列、一维数组(这里注意),串
线性表在不同的存储结构下体现不同,顺序存储结构下,体现为顺序表,链表存储结构下,单向链表,双向链表等都是线性表
非线性结构
树结构
树结构是一类重要的非线性数据结构,其中以二叉树最为常用,树是以为分支关系定义的层次结构,它为计算机应用中出现的具有层次关系或者分支关系的数据提供了一种自然的表示方法,用树结构描述的信息模型在客观世界普遍存在。
- 二叉树
每一个结点下都有左右之分的树结构,没一个结点下最多两个子结点,最少没有
完全二叉树:所有子结点都在左侧
满二叉树:终端结点(叶结点)都在最底层,并且每个父结点下都有两个子结点
- B树
定义:B树是一种平衡多叉树,主要用于查询。m阶B树(每个结点下最多有m个子结点)满足如下条件:- 根结点至少有两个子女
- 每个根结点所包含的关键字个数j满足:(m/2)-1 < j < m-1;
- 除根结点外的所有结点(不包括叶子结点)的度数正好是关键字总数加1,古内部子树个数k满足:(m/2)<= k <= m;
- 所有的叶子结点都位于同一层
上面的定义是百度百科上的,《算法导论》第3版第18章中的B树定义: - 所有叶子结点到根结点的路径长度相同,即具有相同的高度;
- 每个非叶子和非根结点(即内部结点)至少有m-1个孩子结点;根至少2个孩子
- 每个结点最多有2m个孩子节点。
- 每个结点内的键都是递增的
- 每个结点的孩子比key的个数多1
使用方法,查找数据时,将所有的非根结点中的关键字取出,然后找寻是否存在符合范围的根结点,再进行一一对比。
- B+树
定义:B+树是B树的改善结构,在满足B树的要求下,还满足如下要求:- 有K个子树的中间结点包含K个元素(B树种是K-1个元素),每个元素不保存数据,只用来索引,所有的数据都存在在叶子结点
- 所有的叶子结点种包含了全部的元素的信息,及指向含有这些元素记录的指针,且叶子结点本身依关键字的大小自小而大顺序链接
- 所有的中间节点元素都同时存在于子节点,在子结点中是最大(或最小)元素
对比B树的优势:查找迅速,存储结构简单,查询稳定
图
数据结构中的元素存在多对多的相互关系
常见的数据机构有:有向无环图、二元决策图、无向图
集合
定义:集合的定义是由一组无序且唯一(即不能重复)的项组成的。不包含任何元素的集合就叫做空集。