![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
OliverNeko
理想是最真实的现实。
展开
-
[数据结构笔记] 图
图的逻辑结构 图的定义 图是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为: G=(V,E) 其中:G表示一个图,V是图G中顶点的集合,E是图G中顶点之间边的集合。 在线性表中,元素个数可以为零,称为空表; 在树中,结点个数可以为零,称为空树; 在图中,顶点个数不能为零,但可以没有边。 图的基本术语 简单图:在图中,...原创 2019-11-24 17:18:28 · 331 阅读 · 0 评论 -
[数据结构笔记] 线索二叉树
线索链表 线索:将二叉链表中的空指针域指向前驱结点和后继结点的指针被称为线索; 线索化:使二叉链表中结点的空链域存放其前驱或后继信息的过程称为线索化; 线索二叉树:加上线索的二叉树称为线索二叉树。 结点结构 enum flag {Child, Thread}; template <class T> struct ThrNode { T da...原创 2019-11-15 21:44:11 · 250 阅读 · 0 评论 -
[数据结构笔记] 最优二叉树
相关概念 叶子结点的权值:对叶子结点赋予的一个有意义的数值量。 二叉树的带权路径长度:设二叉树具有n个带权值的叶子结点,从根结点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和。 记为: :第k个叶子的权值 :从根结点到第k个叶子的路径长度 哈夫曼树:给定一组具有确定权值的叶子结点,带权路径长度最小的二叉树。 例:给定4个叶子结点,其权值分别为{2,3,4,7},可以构造出形状...原创 2019-11-15 21:33:20 · 2045 阅读 · 0 评论 -
[数据结构笔记] 二叉树(三)
一、二叉树的建立 设二叉树中的结点均为一个字符。假设扩展二叉树的前序遍历序列由键盘输入,root为指向根结点的指针,二叉链表的建立过程是: 1. 按扩展前序遍历序列输入结点的值 2.如果输入结点值为“#”,则建立一棵空的子树 3.否则,根结点申请空间,将输入值写入数据域中, 4. 以相同方法的创建根结点的左子树 5.以相同的方法创建根结点的右子树 template <clas...原创 2019-11-15 21:23:47 · 368 阅读 · 0 评论 -
[数据结构笔记] 二叉树(二)
(二)二叉树的遍历操作 一、前序(根)遍历 若二叉树为空,则空操作返回;否则: ①访问根结点; ②前序遍历根结点的左子树; ③前序遍历根结点的右子树。 前序遍历序列:A B D G C E F 二、中序(根)遍历 若二叉树为空,则空操作返回;否则: ①中序遍历根结点的左子树; ②访问根结点; ③中序遍历根结点的右子树。 中序遍历序列:D G B A E C F 三、后...原创 2019-11-14 22:50:50 · 235 阅读 · 0 评论 -
[数据结构笔记] 二叉树(一)
(一)二叉树的逻辑结构 一、二叉树的定义: 二叉树是n(n≥0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。 二、特点: ⑴ 每个结点最多有两棵子树; ⑵ 二叉树是有序的,其次序不能任意颠倒。 注意:二叉树和树是两种树结构。 三、二叉树的基本形态: 四、特殊的二叉树 斜树 1 .所有结...原创 2019-11-13 13:43:27 · 121 阅读 · 0 评论 -
[数据结构笔记] 树
(一)树的逻辑结构 一、树的定义 树:n(n≥0)个结点的有限集合。 当n=0时,称为空树; 任意一棵非空树满足以下条件: ⑴ 有且仅有一个特定的称为根的结点; ⑵ 当n>1时,除根结点之外的其余结点被分成m(m>0)个互不相交的有限集合T1,T2,… ,Tm,其中每个集合又是一棵树,并称为这个根结点的子树。 树的定义是采用递归方法。 二、树的基本术语 结点的度:结点所...原创 2019-11-12 12:47:18 · 165 阅读 · 0 评论 -
[数据结构笔记] 队列
一、队列的逻辑结构 队列:只允许在一段进行插入操作,而另一端进行删除操作的线性表。 空队列:不含任何数据元素的队列。 允许插入(也称入队、进队)的一端称为队尾,允许删除(也称出队)的一端成为队头。 队列的操作特性:先进先出 二、顺序队列的存储结构及实现 确定不同的队空、队满的判定条件: 方法一:附设一个存储队列中元素个数的变量num,当num=0时队空,当num=Queuesiz...原创 2019-11-06 17:49:12 · 432 阅读 · 0 评论 -
[数据结构笔记] 字符串
串的逻辑结构 串:零个或多个字符组成的有限序列。 串长度:串中所包含的字符个数。 空串:长度为0的串,记为:" "。 非空串通常记为: S=" s1 s2 …… sn " 其中:S是串名,双引号是定界符,双引号引起来的部分是串值 ,si(1≤i≤n)是一个任意字符。 子串:串中任意个连续的字符组成的子序列。 主串:包含子串的串。 子串的位置:子串的第一个字...原创 2019-11-06 14:41:58 · 152 阅读 · 0 评论 -
[数据结构笔记] 栈
一、栈的逻辑结构 栈:限定仅在表尾进行插入和删除操作的线性表。 空栈:不含任何数据元素的栈。 允许插入和删除的一端称为栈顶,另一端称为栈底。 示意图: 二、顺序栈的存储结构及实现 其中top为顺序栈栈顶指针。 进栈操作:top++; 出栈操作:top--; 判断栈空:top==-1; 栈满:top==MAXSIZE-1; 顺序栈: const int ...原创 2019-11-03 22:04:05 · 213 阅读 · 0 评论 -
[数据结构笔记]链表
链表是线性表的链式存储结构的实现。链表所占用的内存并非连续的,需要通过指针依次连接。 单链表 单链表通常有两种形式:带头结点和不带头结点的单链表。相比较前者能够简化操作,便于实现。 单链表实现 template <typename T> struct Node { T data; Node<T> *next; //此处<T>也可以省略 }; 在...原创 2019-10-28 19:42:56 · 188 阅读 · 0 评论 -
[数据结构笔记]顺序表
线性表的顺序存储结构称作顺序表,其基本思想是用一段地址连续的存储单元依次存储线性表中的数据元素。其中数组下标与数据元素的序号是一一对应的。一般需要分配固定长度的数组空间存储顺序表。 一、顺序表的构造 template <typename T> class Seqlist{ public: Seqlist(); Seqlist(T a[], ...原创 2019-10-28 18:27:48 · 228 阅读 · 0 评论