假设图G采用邻接表存储

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

(3)矩阵中1的个数的一半为图中边的数目;
(4)很容易判断顶点i 和顶点j之间是否有边相 连(看矩阵中i行j列值是否为1)。
邻接矩阵存储表示特点
邻接矩阵法优点:
容易实现图的操作,如:求某顶点的度、判断顶点 之间是否有边(弧)、找顶点的邻接点等等。仅耗 费 O(1) 时间。
邻接矩阵法缺点:
n个顶点需要n*n个单元存储边(弧);空间效率为 O(n2)。对稀疏图而言尤其浪费空间。
指示链表中 第一个结点
存储顶点Vi的 名或其他信息
邻接表表示
从无向图的邻接表可以得到如下结论:
(1)第i 个链表中结点数目为顶点i的度; (2)所有链表中结点数目的一半为图中边数;
(3)占用的存储单元数目为n+2e 。
7.1 图的定义和术语
7、路径、路径长度、回路(环)、简单 路径 8、连通、连通图、连通分量 9、强连通图、强连通分量 10、生成树、有向树、生成森林
7.2 图的存储表示



图的数组(邻接矩阵)存储表示(重点) 图的邻接表存储表示(重点) 有向图的十字链表存储表示 无向图的邻接多重表存储表示
回答问题
(6)写出G1的邻接矩阵、邻接表和十字链表; (7)写出G2的邻接矩阵、邻接表和邻接多重表。 3、如下所示为一带权有向图,写出其邻接矩阵、 邻接表。
V1
10
40
V2
20
V3
50
V4
邻接矩阵的结构定义:
#define MAX_VERTEX_NUM 20 Typedef enum{DG,DN,UDG,UDN} Graphkind;
引言
图(Graph)是一种较线性表和树更为复杂 的数据结构。 图形结构中,结点之间 的关系可以是任意的, 任意两个数据元素之间都可能相关。
应用广泛:Biblioteka Baidu
如电路网络分析、交通运输、管理与线路的 铺设、印刷电路板与集成电路的布线等众多直接 与图有关的问题,它们必须用图的有关方法进行 处理; 另外像工作的分配、工程进度的安排、课程表 的制订、关系数据库的设计等许多实际问题,如 果间接地用图来表示,处理起来比较方便。
邻接表表示
图的邻接表存储方法是一种顺序分配与链式分配相结合 的存储方法,它包括两部分: 一部分是单链表,用来存 放边的信息;另一部分是数组,主要用来存放顶点本身 的数据信息。 表结点
adjvex nextarc info
指示下一条边 或弧的结点
信息可无
指示与顶点Vi邻接的 点在图中的位置
头结点
data firstarc
150
150 200
5
漯河
2
4
180 许昌
第7章 图
7.1 图的定义和术语 7.2 图的存储结构 7.3 图的遍历操作 7.4 图的连通性问题 7.5 有向无环图及其应用 7.6 最短路径
7.1 图的定义和术语
1、图的结构定义、图形结构特点 2、顶点、弧、边、弧头、弧尾 3、无向图和有向图 4、完全图和有向完全图 5、网、子图 6、顶点的度、入度和出度、 边、弧与各顶点度的关系
问题的提出
假设有”平顶山”、”郑州”、”洛阳”、”许昌”、”漯 河”五城市的交通图如下,完成如下要求: 1:对任意输入的两个城市,输出它们之间的直接距 离,有则输出实际距离,无则输出道路不直接相通。 2:对任意一个城市,输出都能够直接通达哪些城市, 平顶山 距离多少? 1
100 120
洛阳 郑州
3
第七章

第7章 图
一、教学内容:
1、图的基本概念 2、图的存储结构(邻接矩阵、邻接表); 3、图的遍历(深度优先搜索、广度优先搜索); 4、最小生成树(kruskul算法、prim算法); 5、最短路径(dijkstra算法、floyd算法); 6、AOV网络与拓扑排序; 7、AOE网络与关键路径。
第7章 图
教学重点: 图的定义、术语及其含义,各种图的邻接矩阵 表示法及其类型说明,图的按深度优先搜索遍 历方法和按广度优先搜索遍历方法,生成树和 最小生成树的概念, Prim 算法,拓扑序列和 拓扑排序的概念和算法思想,关键路径的算法 思想,最短路径的算法思想。 教学难点: 图的存储表示、关键路径,最短路径算法 。
typedef struct ArcCell { // 弧的定义
VRType adj; // VRType是顶点关系类型。 // 对无权图,用1或0表示相邻否; // 对带权图,则为权值类型。
InfoType *info; // 该弧相关信息的指针
} ArcCell,
AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM];
回答问题
1、什么是图形结构?它和线性结构、树 形结构有何区别? 2、以下图为例,理解图的相关术语,并 回答有关问题。
A B
A
B
E
C G1 D C G2 D
回答问题
(1)G1中,A到D的路径是什么?路径长 度多少? (2)G2中,A到E的路径是什么?路径长 度多少? (3)G1是强连通图吗?若不是找出其强 连通分量? (4)写出G2的生成树; (5)写出G1的生成森林;
第7章 图
二、教学要求:
1、理解图的基本概念,熟悉图的各种存储结构及其构 造算法; 2、熟练掌握图的两种搜索路径的遍历; 3、掌握构造最小生成树的方法,并理解算法; 4、掌握用Dijkstra方法求解单源最短路径问题,理解 Floyd(弗洛伊德)算法思想; 5、掌握求活动网络的拓扑排序的方法,并理解算法; 6、掌握求解关键路径的方法。
typedef struct { // 图的定义
VertexType AdjMatrix // 顶点信息 arcs; // 弧的信息 vexs[MAX_VERTEX_NUM]; int vexnum, arcnum; // 顶点数,弧数
GraphKind kind;
} MGraph;
// 图的种类标志
从有向图的邻接矩阵可以得出如下结论
(1) 矩阵不一定是对称的;
(2) 第i 行中1的个数为顶点i 的出度;
(3) 第i列中1的个数为顶点 i的入度; (4) 矩阵中1的个数为图中弧的数目; (5) 很容易判断顶点i 和顶点j 是否有弧相连.
从无向图的邻接矩阵可以得出如下结论
(1)矩阵是对称的,可压缩存储(上(下)三角; (2)第i行或第i 列中1的个数为顶点i 的度;
相关文档
最新文档