在上篇文章我们学习了图的定义和基本术语,大家可以通过下面的链接学习:
这篇文章我们就来系统的学习一下图的类型定义和存储结构。
目录
案例引入:
六度空间理论:你和任何一个陌生人之间所间隔的人不会超过6个,也就是说,最多通过6个中间人你就能够认识任何一个陌生人。

把六度空间理论中的人际关系网络抽象成一个无向图G。用图G中的一个顶点表示一个人,两个人认识与否用代表这两个人的顶点之间是否有一条边来表示。从任一顶点出发用广度优先方法对图进行遍历,统计所有路径长度不超过7的顶点。
一,图的类型定义

对图的基本操作有——
CreateGraph(&G,V,VR)
初始条件:V是图的顶点集,VR是图中弧的集合。
操作结果:按V和VR的定义构造图G。
DFSTraverse(G)
初始条件:图G存在。
操作结果:对图进行深度优先遍历。
BFSTraverse(G)
初始条件:图G存在。
操作结果:对图进行广度优先遍历。
知道了图的抽象类型定义,那么具体该如何在存储空间中实现对图的存储?
二,图的存储结构
我们知道,数据结构的存储结构一共有两种:顺序存储和链式存储,同样对于图而言,图的存储结构有以下方式:
1.顺序存储结构:数组表示法(邻接矩阵)
2.链式存储结构:多重链表(邻接表,邻接多重表,十字链表)
我们将重点学习——
邻接矩阵(数组)表示法
邻接表(链式)表示法
A. 邻接矩阵(数组)表示法
建立一个顶点表(记录各个顶点信息)和一个邻接矩阵(表示各个顶点之间关系)。
设图 A = (V, E) 有 n 个顶点,则图的邻接矩阵是一个二维数组 A.Edge[n][n],定义为:

a.无向图的邻接矩阵表示法

分析1:无向图的邻接矩阵是对称的;
分析2:顶点i 的度=第 i 行 (列) 中1 的个数;
特别:完全图的邻接矩阵中,对角元素为0,其余1
b.有向图的邻接矩阵表示法


最低0.47元/天 解锁文章
531

被折叠的 条评论
为什么被折叠?



