一、链表--逻辑上连续、空间上不连续
1、单链表
由数据域和next指针构成,next指针指向下一个链表结点
2、双链表
由数据域、前驱结点和后继结点构成,访问一个结点后既可以向前依次访问,也可以向后依次访问
二、数组--逻辑和空间上都连续
1、一维数组
2、二维数据
元素为一维数组的一维数组
特点:每行的列数可以不一样,因为存储的每个一维数组长度不固定
三、栈和队列
1、栈--桶状(封底)
先入后出
2、队列--管状(双通)
先入先出
四、树
1、度
结点的度=该结点的分支数(孩子数)
树的结点数=所有结点度+1
度为m的树--每个结点最多右m个孩子
2、二叉树--每个结点最多只有两个孩子
(1)满二叉树:所有结点的度都为2
(2)完全二叉树:从上到下,从左到右连续排列(根左右)
(3)线索二叉树:有孩子无线索,无孩子有线索
左空--前驱线索
右空---后继线索
(4)二叉排序树:按大小顺序,左根右
(5)平衡二叉树:|每个结点左孩子高度-右孩子高度|<=1
(6) B树:度为m的树;是排序树,左<根<右;所有结点既存数据又存关系
叶子节点不带信息,可看作另加的外部节点或查找失败的节点
(7)B+树:所有数据均存在叶子结点,非叶子结点都存的关系
叶子节点都在同一层,每个叶子节点都前后连接
(8)红黑树:平衡二叉排序树
根结点是黑的;基本是一层红的一层黑的,但每层的null结点一定是黑的
即,除叶子结点外,父子不同色
(9)哈夫曼树:WPL最小的二叉树
WPL=路径长度*权值
数据结构--B树、B+树、红黑树区别_@snow'的博客-CSDN博客
五、图
1、这是一种非单一关系的较为复杂的数据结构
2、图相关的算法
(1)最小生成树
- 普里算法:选点法,选域顶点连边权值最小的值
- 克鲁斯卡尔算法:选边法,选边权值并排序,依次连边
(2)最短路径
- 迪杰斯特拉算法:选直达的两端点最小值,画带权邻接矩阵,两点直达填权值,非直达无穷号表示
- 弗洛伊德算法:也通过权邻接矩阵方式