数据结构图.ppt
《数据结构图.ppt》由会员分享,可在线阅读,更多相关《数据结构图.ppt(39页珍藏版)》请在第壹文秘上搜索。
1、1图:要求 图的基本概念 图的存储 邻接矩阵、邻接表,邻接多重表,十字链表,边表) 图的遍历(深度优先遍历和广度优先遍历) 最小生成树 构造 拓扑排序和关键路径 拓扑排序算法实现 关键路径的求解步骤 最短路径 Dijkstra算法求一个顶点到其他各顶点的最短路径 Floyd算法:用来求各顶点之间的最短路径,时间复杂度为O(n3)2第一部分 图的定义和术语3 通常:用通常:用 |V| 表示顶点的数量(表示顶点的数量(|V| 1),),用用 |E| 表示边的数量(表示边的数量(|E| 0)。)。3/15“图图” G可以表示为两个集合:可以表示为两个集合:G =(V, E)。每条。每条边是一个顶点对
2、边是一个顶点对(v, w) E ,并且并且 v, w V。 图图的定义的定义(1) 无向图(完全有向图边数与顶点数之间的无向图(完全有向图边数与顶点数之间的 关系)关系)(2) 有向图(完全有向图有向图(完全有向图弧数与顶点数之间的弧数与顶点数之间的 关系关系)(3) 简单图简单图:没有重边和自回路的图没有重边和自回路的图(4) 邻接邻接(5) 路径,路径长度路径,路径长度(6) 无环(有向)图:没有任何回路的(有向)图无环(有向)图:没有任何回路的(有向)图(7) 度,入度,出度度,入度,出度(8) 无向图的顶点无向图的顶点连通、连通图、连通分量连通、连通图、连通分量(9) 有向图的顶点强连
3、通,有向图的顶点强连通,强连通图、连通分量强连通图、连通分量4邻接矩阵邻接矩阵(Adjacency Matrix)边边的信息:用的信息:用邻接矩阵邻接矩阵A n n (二维数组)表示为(二维数组)表示为: 其它的边或如果 0, ),( 1A Gvvvvjijiji顶点顶点信息:有信息:有n个顶点的图个顶点的图G(V, E) 用一维数组用一维数组D n 表示;表示;12/15 无权图的邻接矩阵定义无权图的邻接矩阵定义3V0V3V2V1 无权图的邻接矩阵表示示例无权图的邻接矩阵表示示例 图的存储结构图的存储结构 图的常用的存储结构有:图的常用的存储结构有:邻接矩阵、邻接链表邻接矩阵、邻接链表、十字
4、链表、邻接多重表和边表十字链表、邻接多重表和边表。5 ( ,) ,A ijijijwv vv vGij如果或的边其它 图的邻接矩阵表示示例图的邻接矩阵表示示例例例6.9带权图的邻接矩阵表示示例带权图的邻接矩阵表示示例12/15 带权图的邻接矩阵的定义带权图的邻接矩阵的定义6邻接表邻接表(Adjacency List) 对于图对于图G中的每个顶点中的每个顶点vi,将所有邻接于,将所有邻接于vi的顶点的顶点vj链成一链成一个单链表,这个单链表就称为顶点个单链表,这个单链表就称为顶点vi的邻接表,再将所有点的邻接表,再将所有点的邻接表表头放到一个数组中,就构成了图的的邻接表表头放到一个数组中,就构成
5、了图的邻接表邻接表。VertexFirstEdge顶点域顶点域 边表头指针边表头指针 AdjV Next邻接点域邻接点域 指针域指针域14/15Vertex:数据域,存储数据域,存储顶点顶点信息;信息;FirstEdge:指针域,指向链表中的:指针域,指向链表中的第一个第一个结点(即该顶点的结点(即该顶点的第一个第一个邻接点)。邻接点)。AdjV: : 邻接点域,指示与顶点邻接点域,指示与顶点Vi邻接的顶点在邻接的顶点在顶点表顶点表中的下标;中的下标;Next:链域,指向下一个与顶点:链域,指向下一个与顶点Vi邻接的邻接的结点结点。7邻接表邻接表(Adjacency List) 无向图的邻接表
6、表示示例无向图的邻接表表示示例3V0V3V2V114/158邻接表与逆邻接表邻接表与逆邻接表无向图无向图中有中有n 个顶点和个顶点和e条边,则它的邻接表需条边,则它的邻接表需n个头结点和个头结点和2e个表个表边结点。显然,在边边结点。显然,在边稀疏稀疏 ( e n(n-1)/2 ) 的情况下,用的情况下,用邻接表表示邻接表表示图比邻接矩阵节省存储空间图比邻接矩阵节省存储空间; 无向图的邻接表,顶点无向图的邻接表,顶点vi的度恰为第的度恰为第i个链表中的结点数;而在个链表中的结点数;而在有向有向图中图中,第,第i个链表中的结点个数只是顶点个链表中的结点个数只是顶点vi的出度,为便于确定顶点的出度
7、,为便于确定顶点vi的入度,可以建立一个有向图的的入度,可以建立一个有向图的逆邻接表逆邻接表,即对每个顶点,即对每个顶点vi 建立一个建立一个链接以链接以vi为头的弧的链表。为头的弧的链表。 例如:例如:15/159 对于有向图来说,邻接表有缺陷:对于有向图来说,邻接表有缺陷: 正邻接表求顶点的出度易,但求其入度难;正邻接表求顶点的出度易,但求其入度难; 逆邻接表求入度易,但求出度难。逆邻接表求入度易,但求出度难。 是否可以将两者结合?是否可以将两者结合? 可以,可以,十字链表十字链表 对于对于无向图无向图来说,邻接表有缺陷:来说,邻接表有缺陷: 一条边一条边(v,w)的两个表结点分别被选在以
8、的两个表结点分别被选在以v和和w为头结点的链表中,在为头结点的链表中,在涉及到边的操作会带来不便涉及到边的操作会带来不便 改进?改进? 邻接多重表邻接多重表(Adjacency Multilist)10 在某些应用中,有时主要考察图中边的权值以及所依附的在某些应用中,有时主要考察图中边的权值以及所依附的两个顶点,即两个顶点,即图的结构主要由边来表示图的结构主要由边来表示,称为,称为边表存储结边表存储结构构。 边表结构采用顺序存储,用边表结构采用顺序存储,用2个一维数组个一维数组构成,一个存储构成,一个存储顶点信息顶点信息,一个存储,一个存储边的信息边的信息。边数组边数组的每个元素由三部的每个元
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构图
