勤思考研数据结构讲义图

合集下载

《数据结构》课件

《数据结构》课件

查找操作
顺序查找
二分查找
链表查找
在顺序存储结构的线性表中,查找操 作需要从线性表的第一个节点开始, 逐个比较节点的数据域,直到找到目 标数据或遍历完整个线性表。时间复 杂度为O(n)。
在有序的顺序存储结构的线性表中, 查找操作可以采用二分查找算法。每 次比较目标数据与中间节点的数据域 ,如果目标数据大于中间节点,则在 右半部分继续查找;否则在左半部分 查找。时间复杂度为O(log n)。
数据结构是算法的基础。许多算法的实现需要依赖于特定的数据结构, 因此掌握常见的数据结构是编写高效算法的关键。
数据结构在解决实际问题中具有广泛应用。无论是操作系统、数据库系 统、网络通信还是人工智能等领域,数据结构都发挥着重要的作用。
数据结构的分类
根据数据的逻辑关系,数据结构可以分为线性结构和非线 性结构。线性结构如数组、链表、栈和队列等,非线性结 构如树形结构和图形结构等。
04
数据结构操作
插入操作
顺序插入
在顺序存储结构的线性表中,插入操作 需要找到插入位置的前驱节点,修改前 驱节点的指针,使其指向新节点,然后 让新节点指向后继节点。如果线性表的 第一个节点是空节点,则将新节点作为 第一个节点。
VS
链式插入
在链式存储结构的线性表中,插入操作需 要找到插入位置的前驱节点,修改前驱节 点的指针,使其指向新节点。如果线性表 的第一个节点是空节点,则将新节点作为 第一个节点。

01
02
03
04
图是一种非线性数据结构,由 节点和边组成,其中节点表示 数据元素,边表示节点之间的
关系。
图具有网络结构,节点之间的 关系可以是任意复杂的,包括
双向、单向、无向等。

《数据结构图论部分》PPT课件

《数据结构图论部分》PPT课件

Page 4
2020/11/24
哥尼斯堡七桥问题
能否从某个地方出发,穿过所有的桥仅一次 后再回到出发点?
Page 5
2020/11/24
七桥问题的图模型
欧拉回路的判定规则:
1.如果通奇数桥的地方多于
C
两个,则不存在欧拉回路;
2.如果只有两个地方通奇数
桥,可以从这两个地方之一
A
B 出发,找到欧拉回路;
V4 是有向边,则称该图为有向图。
Page 9
2020/11/24
简单图:在图中,若不存在顶点到其自身的边,且同 一条边不重复出现。
V1
V2
V3
V4
V5
非简单图
V1
V2
V3
V4
V5
非简单图
V1
V2
V3
V4
V5
简单图
❖ 数据结构中讨论的都是简单图。
Page 10
2020/11/24
图的基本术语
邻接、依附
DeleteVex(&G, v); 初始条件:图 G 存在,v 是 G 中某个顶点。 操作结果:删除 G 中顶点 v 及其相关的弧。
Page 34
2020/11/24
InsertArc(&G, v, w); 初始条件:图 G 存在,v 和 w 是 G 中两个顶点。 操作结果:在 G 中增添弧<v,w>,若 G 是无向的,则还
Page 2
2020/11/24
• 知识点
– 图的类型定义 – 图的存储表示 – 图的深度优先搜索遍历和广度优先搜索遍历 – 无向网的最小生成树 – 拓扑排序 – 关键路径 – 最短路径
Page 3

数据结构课件图演示文稿

数据结构课件图演示文稿
数据结构课件图演示文稿
第一页,共103页。
1. 哥尼斯堡七桥问题
德国古城—哥尼斯堡—普雷格尔河—七
2. 桥问题:从任一桥头出发,依次走过每座
3. 桥,每座桥只走一次,最后回到出发点。
4.
——一笔画问

第二页,共103页。
第三页,共103页。
第四页,共103页。
第7章 图
7.1 基本术语
7.2 存储结构
答:是树!而且是一棵 有向树!
第十二页,共103页。
图的术语(续)
路径: 在图 G=(V, E) 中, 若从顶点 vi 出发, 沿一些边经过一些顶点 vp1, vp2, …, vpm,到达顶点vj。则称顶点序列 ( vi vp1 vp2 ... vpm vj ) 为 从顶点vi 到顶点 vj 的路径。它经过的边(vi, vp1)、(vp1, vp2)、...、 (vpm, vj)应当是属于E的边。
带权图: 即边上带权的图。其中权是指每条边可以
标上具有某种含义的数值(即与边相关的
数)。
网 : →带权图 连通图: 在无向图中, 若从顶点v1到顶点v2有
路径, 则称顶点v1与v2是连通的。如
果图中任意一对顶点都是连通的, 则 称此图是连通图。
非连通图的极大连通子图叫做连通分量。
强连通图: 在有向图中, 若对于每一对顶点vi和vj, 都
4
第八页,共103页。
稀疏图:边较少的图。通常边数远少于nlogn 稠密图:边很多的图。 无向图中,边数接近n(n-1)/2
有向图中,边数接近n(n-1)
子 图:设有两个图 G=(V, E) 和 G’=(V’, E’)。若 V’ V 且 E’
E, 则称 图G’ 是 图G 的子图。

2024版年度《数据结构图》ppt课件

2024版年度《数据结构图》ppt课件
二叉树是每个结点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。
2024/2/2
二叉树性质
在二叉树的第i层上至多有2i-1个结点;深度为k的二叉树至多有2k-1个结点;对任何一棵二 叉树T,如果其终端结点数为n0,度为2的结点数为n2,则n0=n2+1等。
存储结构
顺序存储结构和链式存储结构。其中,链式存储结构是通过一组任意的存储单元来存储二叉 树中的各个结点,每个结点包含数据域和指针域。
算法应用
项目管理、任务调度、资源分配 等。
2024/2/2
40
06
数据结构图绘制技巧分享
2024/2/2
41
常见数据结构图类型介绍
01
02
03
04
线性结构图
如数组、链表等,按顺序排列 元素。
树形结构图
如二叉树、AVL树等,表示层 次关系。
图形结构图
如网状结构、无向图等,表示 复杂关系。
哈希结构图
3
算法介绍 Prim算法、Kruskal算法、Dijkstra算法、Floyd 算法等。
2024/2/2
39
拓扑排序和关键路径问题探讨
拓扑排序
对有向无环图(DAG)进行排序, 使得对每一条有向边(u,v),均有
u在v之前。
关键路径问题
求解有向无环图中从源点到汇点 的最长路径,即关键路径,它决
定了整个工程的完成时间。
用于表示键值对映射关系。
2024/2/2
42
绘制数据结构图注意事项
明确数据结构类型
根据实际需求选择合适的数据结 构类型。
2024/2/2
布局合理
合理安排元素位置,使得整体结 构清晰易懂。

勤思考研数据结构讲义图

勤思考研数据结构讲义图

1. 图的有关概念图,顶点,弧,弧头,弧尾:有向图(顶点集+弧集),0<e<n(n-l),无向图(顶点集+边集),0<e<n(n-l)/2:稀疏图(e<nlogn),稠密图;完全图e=n(n-l)/2,有向完全图e=n(n-l):网,有向网,无向网。

子图,邻接点,顶点的度,入度,岀度;路径,路径长度(经过边或弧的数目),简单路径,回路(环),简单回路(简单环):连通图,连通分呈,强连通分量。

例:有6个顶点组成的无向图构成连通图,最少需要(」_)条边:当边的数目大于(_匸)时,该图必定连通。

分析:a. 5。

最少有n-1条边就可以构成连通图。

b.lO。

考虑将n个顶点分成两组,一组有n-1个顶点,另一组只有1个顶点。

首先在第一组中添加边,直到n-l个顶点构成全连通子图,共(n-l)(n-2)/2条边,此后若再在图中任意添加一条边将必泄连通两组顶点,从而构成连通图。

思考:对有向图有何结论。

2. 图的存储结构(1)图的存储结构常见图的存储结构有:邻接矩阵,邻接表,逆邻接表,十字链表,邻接多重表.邻接多重表只适用于存储无向图,其他存储结构可以存储无向图和有向图。

例:画出图的邻接矩阵、邻接表、逆邻接表和十字琏表。

(2)邻接矩阵简言之,“数组(顶点)+二维数组(弧)+个数”。

const int MAX_VERTEX =最大顶点个数;//顶点向量} Graph:图:有边(弧)为1:否则为0。

网:有边(弧)为权值;否则为co。

存储空间个数为2,与边的数目无关。

无向图的邻接矩阵是对称的。

0110000110000101000010010(3)邻接表简言之「数组(弧尾顶点)+链表(邻接点)+个数;typedef struct ArcNode { // 弧结点intadjvex; struct ArcNode *nextarc; )ArcNode; //邻接点//下一个邻接点typedef struct VexNode { // 顶点结点VertexTypeArcNode *firstarc;} VexNode;const int MAX_VERTEX =最大顶点个数; typedef struct Graph { // 图VexNode vexs[MAX_ VERTEX];int vexnum, arcnum;} Graph;边(弧)多则需要存储空间多。

数据结构基础讲义ppt课件

数据结构基础讲义ppt课件

三叉链存储
.
Date:May 30, 2020
4.8 二叉树的遍历
IT Education & Training
• 遍历是指按某条搜索路线遍访每个结点且不重复(又 称周游),遍历是树结构插入、删除、修改、查找和 排序运算的前提,是二叉树一切运算的基础和核心。
• 牢记一种约定,对每个结点的查看都是“先左后右”。
例子中的数学模型正是数据结构要讨论的问题。
.
Date:May 30, 2020
1.2 定义
IT Education & Training
•数据结构是一门讨论"描述现实世界实体的数学模型 及其上的操作在计算机中如何表示和实现"的学科。
a. 在解决问题时可能遇到的典型的逻辑结构(数据结构) b. 逻辑结构的存储映象(存储实现) c. 数据结构的相关操作及其实现。(算法)
•二叉树由一个根结点加上两棵分别称为左子树和右子 树的互不相交的树组成:
–每个结点最多只有两棵子树(不存在度大于2的结点) –左子树和右子树次序不能颠倒(有序树)
.
Date:May 30, 2020
4.6 树转化为二叉树
IT Education & Training
•左孩子右兄弟表示法可以将一颗多叉树转化为一颗二
• 数据结构和算法的关系:数据结构是专门研究 数据的存储问题,而对存储后的数据进行相应 的操作就是算法。
.
Date:May 30, 2020
1.5 算法效率的度量
IT Education & Training
• 我们通过大O表示法来表示算法的效率:时 间复杂度、空间复杂度。规则如下:
(1)只关注最高次项,常数项和次要项忽略; (2)时间复杂度是指最坏时间复杂度; (3)只有常数项记做1。

数据结构课件PPT

数据结构课件PPT

二分查找
二分查找法
将有序数据集分成两个部分,每次取中间位置的值与目标值进行比较,根据比 较结果缩小查找范围,直到找到目标值或确定目标值不存在。
优缺点
查找速度快,但要求数据集必须是有序的。
哈希查找
哈希表
利用哈希函数将数据元素映射到内存中的地址,实现数据的 快速查找。
优缺点
查找速度快,但需要解决哈希冲突问题,并可能存在哈希表 过大或过小的问题。

数据结构的基本概念
数据结构的基本概念包括:数据、数据 元素、数据类型、数据结构等。
数据结构是指数据的组织形式,即数据 元素之间的相互关系。
数据类型是指一组具有相同特征和操作 的数据对象(如整数、实数、字符串等 )。
数据是信息的载体,是描述客观事物的 符号记录。
数据元素是数据的基本单位,一个数据 元素可以由若干个数据项组成。
稳定排序
归并排序是一种稳定的排序算法,即相等的元素在排序后 保持其原有的顺序。
非递归算法
归并排序是一种非递归算法,即通过迭代方式实现算法过 程。
需要额外的空间
归并排序需要额外的空间来存储中间结果和临时变量。
查找算法
06
线性查找
顺序查找
逐一比对数据元素,直到找到目 标值或遍历完整个数据集。
优缺点
简单易懂,但效率较低,适用于 数据量较小的情况。
拓扑排序的应用
拓扑排序是一种对有向无环图进行排序的算法, 它按照拓扑关系将图的节点排列成一个线性序列 。
有向无环图是一种没有环路的有向图,拓扑排序 可以有效地解决有向无环图的排序问题。
拓扑排序的应用非常广泛,包括确定任务的执行 顺序、确定事件的发生顺序等。
拓扑排序的基本思路是从有向无环图的任一节点 开始,删除该节点,并记录下该节点的所有后继 节点的编号,然后按编号从小到大的顺序重复以 上步骤。

数据结构考研讲义

数据结构考研讲义

目录绪论 (4)0.1 基本概念 (4)第一章线性表 (6)1.1 线性表的定义 (6)1.2 线性表的实现 (6)1.2.2 线性表的链式存储结构 (9)第二章栈、队列和数组 (16)2.1 栈 (16)2.2 队列 (21)2.3 特殊矩阵的压缩存储 (24)2.3.1 数组 (24)2.3.2 特殊矩阵 (24)第三章树与二叉树 (27)3.1 树的概念 (27)1.树的定义 (27)2.相关术语 (27)3.2 二叉树 (28)3.2.1 定义与性质 (28)3.2.2 二叉树的存储 (29)3.2.3 二叉树的遍历 (31)3.2.4 线索二叉树 (35)3.3 树和森林 (39)3.3.1 树的存储结构 (39)3.3.2 森林和二叉树的转换 (40)3.3.3 树和森林的遍历 (40)3.4 哈夫曼(Huffman)树和哈夫曼编码 (42)第四章图 (43)4.1 图的概念 (43)4.2 图的存储及基本操作 (45)4.2.1 邻接矩阵 (45)4.2.2 邻接表 (45)4.3 图的遍历 (48)4.3.1 深度优先搜索 (48)4.3.2 广度优先搜索 (49)4.4 图的基本应用 (51)4.4.1 最小生成树 (51)4.4.2 最短路径 (52)4.4.3 拓扑排序 (54)4.4.4 关键路径 (55)第五章查找 (58)5.1 查找的基本概念 (58)5.2 顺序查找法 (60)5.3 折半查找法 (61)5.4 动态查找树表 (63)5.4.1 二叉排序树 (63)5.4.2 平衡二叉树 (66)5.4.3 B 树及其基本操作、B+树的基本概念 (68)5.5 散列表 (71)5.5.2 常用的散列函数 (71)5.5.3 处理冲突的方法 (72)5.5.4 散列表的查找 (73)5.5.5 散列表的查找分析 (74)第六章排序 (75)6.1 插入排序 (75)6.1.1 直接插入排序 (75)6.1.2 折半插入排序 (76)6.2 冒泡排序 (77)6.3 简单选择排序 (79)6.4 希尔排序 (80)6.5 快速排序 (81)6.6 堆排序 (83)6.7 二路归并排序 (85)6.8 基数排序 (86)6.9 各种内部排序算法的比较 (88)绪论0.1 基本概念1、数据结构数据结构是指互相之间存在着一种或多种关系的数据元素的集合。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图1. 图的有关概念图,顶点,弧,弧头,弧尾;有向图(顶点集+弧集),0≤e≤n(n-1),无向图(顶点集+边集),0≤e≤n(n-1)/2;稀疏图(e<nlogn),稠密图;完全图e=n(n-1)/2,有向完全图e=n(n-1);网,有向网,无向网。

子图,邻接点,顶点的度,入度,出度;路径,路径长度(经过边或弧的数目),简单路径,回路(环),简单回路(简单环);连通图,连通分量,强连通分量。

例:有6个顶点组成的无向图构成连通图,最少需要(_a_)条边;当边的数目大于(_b_)时,该图必定连通。

分析:a. 5。

最少有n-1条边就可以构成连通图。

b. 10。

考虑将n个顶点分成两组,一组有n-1个顶点,另一组只有1个顶点。

首先在第一组中添加边,直到n-1个顶点构成全连通子图,共(n-1)(n-2)/2条边,此后若再在图中任意添加一条边将必定连通两组顶点,从而构成连通图。

思考:对有向图有何结论。

2. 图的存储结构(1) 图的存储结构常见图的存储结构有:邻接矩阵,邻接表,逆邻接表,十字链表,邻接多重表。

邻接多重表只适用于存储无向图,其他存储结构可以存储无向图和有向图。

(2) 邻接矩阵简言之,“数组(顶点)+二维数组(弧)+个数”。

const int MAX_VERTEX = 最大顶点个数;typedef struct Graph { // 图VertexType vexs[MAX_VERTEX]; // 顶点向量ArcType arcs[MAX_VERTEX] [MAX_VERTEX]; // 邻接矩阵int vexnum, arcnum; // 顶点和弧的个数} Graph;图:有边(弧)为1;否则为0。

网:有边(弧)为权值;否则为∞。

存储空间个数为n2,与边的数目无关。

无向图的邻接矩阵是对称的。

(3) 邻接表简言之,“数组(弧尾顶点)+链表(邻接点)+个数”。

typedef struct ArcNode { // 弧结点 int adjvex; // 邻接点 struct ArcNode *nextarc; // 下一个邻接点 } ArcNode;typedef struct VexNode { // 顶点结点 VertexType data; // 顶点信息 ArcNode *firstarc; // 第一个邻接点 } VexNode;const int MAX_VERTEX = 最大顶点个数; typedef struct Graph { // 图VexNode vexs[MAX_VERTEX]; // 顶点向量 int vexnum, arcnum; // 顶点和弧的个数} Graph;边(弧)多则需要存储空间多。

(4) 逆邻接表简言之,“数组(弧头顶点)+链表(逆邻结点)+个数”。

类型定义类似邻接表。

A B C D E(5) 十字链表简言之,“数组(顶点)+弧结点(含头和尾)+个数”。

边可以看作两条弧。

typedef struct ArcNode { // 弧结点int vtail, vhead; // 弧尾和弧头顶点编号struct ArcNode *nexttail, *nexthead; // 指向同弧尾和同弧头的弧结点} ArcNode;typedef struct VexNode { // 顶点结点VertexType data; // 顶点信息ArcNode *firstin, *firstout; // 指向第一条入弧和第一条出弧} VexNode;const int MAX_VERTEX = 最大顶点个数;typedef struct Graph { // 图VexNode vexs[MAX_VERTEX]; // 顶点向量int vexnum, arcnum; // 顶点和弧的个数} Graph;弧结点中包含两个指针分别指向同一弧头的下一个弧和同一个弧尾的下一个弧。

顶点结点则指向第一个同弧头和弧尾的弧。

十字链表相当于邻接表和逆邻接表的结合。

技巧:把弧结点按行排整齐,然后画链表。

同弧尾的弧组成链表,同弧头的弧组成链表。

(6) 邻接多重表简言之,“数组(顶点)+边结点”。

typedef struct EdgeNode { // 边结点int vexi, vexj; // 边的两个顶点struct EdgeNode *nexti, *nextj; // 两个顶点所依附的下一条边} EdgeNode;typedef struct VexNode { // 顶点结点VertexType data; // 顶点信息EdgeNode *firstedge; // 指向第一条边} VexNode;const int MAX_VERTEX = 最大顶点个数;typedef struct Graph { // 图VexNode vexs[MAX_VERTEX]; // 顶点向量int vexnum, edgenum; // 顶点和边的个数} Graph;只适合存储无向图,不能存储有向图。

技巧:把边结点按列排整齐,然后画链表。

相同顶点组成链表,这里没有起点和终点的区别。

3. 图的遍历(1) 深度优先搜索 1°. 遍历方法从图中某个顶点出发,访问此顶点,然后依次从其未被访问的邻接点出发深度优先遍历图;若图中尚有顶点未被访问,则另选图中一个未被访问的顶点作为起始点,重复上述过程,直到图中所有顶点都被访问为止。

2°. 分析方法方法:画一棵“深度优先搜索树”。

例:下图从A 出发深度优先搜索的结果是:ABEDC 。

分析:画“深度优先搜索树”。

从A 出发,访问A(画圈作标记),A 的邻接点有B 和C(作为A 的孩子),B 未访问,访问B(画圈),B 的邻接点有E(作B 的孩子),...,以此类推,画出搜索树。

深度优先搜索的过程就是沿着该搜索树先根遍历的过程。

技巧:顶点的邻接点是无所谓次序的,所以同一个图的深度优先遍历序列可能不同,但在遍历时(除非邻接点的次序有明确规定)一般按照编号顺序安排邻接点的次序。

3°. 算法课本上的算法稍加改动:void DFSTraverse ( Graph G ){visited [0 .. G.vexnum-1] = false; // 初始化访问标志为未访问(false)for ( v=0; v<G.vexnum; v++ )if ( ! visited[v] ) DFS ( G, v ); // 从未被访问的顶点开始DFS}void DFS ( Graph G, int v ){visit ( v ); visited [v] = true; // 访问顶点v并作标记for ( w=FirstAdjVex(G,v); w>=0; w=NextAdjVex(G,v,w) )if ( ! visited[w] ) DFS ( G, w ); // 分别从每个未访问的邻接点开始DFS}其中的FirstAdjVex(G,v)表示图G中顶点v的第一个邻接点,NextAdjVex(G,v,w)表示图G中顶点v的邻接点w之后v的下一个邻接点。

深度优先搜索算法有广泛的应用,以上算法是这些应用的基础。

(2) 广度优先搜索1°. 遍历方法从图中某顶点出发,访问此顶点之后依次访问其各个未被访问的邻接点,然后从这些邻接点出发依次访问它们的邻接点,并使“先被访问的顶点的邻接点”要先于“后被访问的顶点的邻接点”被访问,直至所有已被访问的顶点的邻接点都被访问。

若图中尚有顶点未被访问,则另选图中未被访问的顶点作为起始点,重复以上过程,直到图中所有顶点都被访问为止。

广度优先搜索从某顶点出发,要依次访问路径长度为1,2,…的顶点。

2°. 分析方法方法:画一棵“广度优先搜索树”。

例:下图从A出发广度优先遍历的结果是:ABCED。

分析:画“广度优先搜索树”。

与深度优先搜索树类似,A为根,其邻接点为其孩子,访问一个顶点,则扩展出其孩子。

不过广度优先搜索的访问次序是对该树按层遍历的结果。

3°. 算法利用队列(类似按层遍历二叉树)。

void BFSTraverse ( Graph G ){visited [0 .. G.vexnum-1] = false; // 初始化访问标志为未访问(false)InitQueue ( Q );for ( v=0; v<G.vexnum; v++ )if ( ! visited[v] ) {// 从v出发广度优先搜索visit ( v ); visited [v] = true;EnQueue ( Q, v );while ( ! QueueEmpty(Q) ) {DeQueue ( Q, u );for ( w=FirstAdjV ex(G,u); w>=0; w=NextAdjVex(G,u,w) )if ( ! visited[w] ) {visit ( w ); visited [w] = true;EnQueue ( Q, w );}}}}(3) 时间复杂度分析观察搜索树可以看出,无论是深度优先搜索还是广度优先搜索,其搜索过程就是对每个顶点求所有邻接点的过程。

当用邻接表存储图时,其时间复杂度为O(n+e);当采用邻接矩阵作为存储结构时,时间复杂度是O(n2) (因为求一个顶点的所有邻接点就是搜索邻接矩阵的一行中的n个数,而顶点的个数为n,总共就是n2)。

4. 最小生成树(1) 最小生成树及MST性质最小生成树。

MST性质。

注意:同一个连通网的最小生成树可能是不唯一的,但其代价都是最小(唯一的)。

(2) 克鲁斯卡尔算法一句话,“不构成环的情况下,每次选取最小边”。

提示:在不要步骤、只要结果的情况下可采用,边较少时特别有效。

(3) 普里姆算法记V是连通网的顶点集,U是求得生成树的顶点集,TE是求得生成树的边集。

普里姆算法:(a) 开始时,U={v0},TE=Φ;(b) 计算U到其余顶点V-U的最小代价,将该顶点纳入U,边纳入TE;(c) 重复(b)直到U=V。

例:用普里姆算法计算下图的最小生成树。

特点只与顶点个数n有关与边的数目e无关适用于稠密图只与边的数目e有关与顶点个数n无关适用于稀疏图5. 拓扑排序有向无环图(DAG),AOV网;拓扑排序。

(a) 无向网(b)-(e) 克鲁斯卡尔算法计算最小生成树(g) 另一个可能的最小生成树(f) 得到的最小生成树拓扑排序,一句话“每次删除入度为0的顶点并输出之”。

例:以下DAG 图拓扑排序的结果是:ABCDE 。

注意:拓扑排序的结果不一定是唯一的。

如:ACBDE也是以上DAG 图的拓扑有序序列。

相关文档
最新文档