- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图的定义及术语及存储结构
数据结构课程的内容:;7.1 基本术语
7.2 存储结构
7.3 图的遍历
7.4 图的连通性
7.5 图的应用;7.1 图的基本术语;E;B;证明:从①可以直接推论出无向完全图的边数——因为无方向,两弧合并为一边,所以边数减半,总边数为n(n-1)/2。;稀疏图:稠密图: ;A;路径:设图G=(V,VR)中的一个顶点序列:
v=vi,0 ,vi,1 , …, vi,m=w 中,(vi,j-1 ,vi,j)(或〈 vi,j-1,vi,j〉) ?VR 1≤j≤m,则称从顶点v 到顶点w 之间存在一条路径。
路径长度:路径上边(或弧)的数目。;连通图:无向图G中任意两个顶点之间都有路径相连通。;生成树:;CreatGraph(G, V, VR)//按定义(V,VR)构造图;对邻接点的操作;插入和删除弧;7.2 图的存储结构;① 建立一个顶点表和一个邻接矩阵。;分析1:无向图的邻接矩阵是对称的;
分析2:顶点i 的度=第 i 行 (列) 中1 的个数;
特别:完全图的邻接矩阵中,对角元素为0,其余全1。;例2 :有向图的邻接矩阵如何表示?;例3 : 有权图(即网络)的邻接矩阵如何表示?; 容易实现图的操作,如:求某顶点的度、判断顶点之间是否有边(弧)、找顶点的邻接点等等。
n个顶点需要n*n个单元存储边(弧);空间效率为O(n2)。;typedef struct ArcCell { // 弧的定义
VRType adj; // VRType是顶点关系类型。
//对无权图,用1或0表示相邻否;对带权图,则为权值类型。
InfoType *info; // 该弧相关信息的指针
} ArcCell,
AdjMatrix[MAX_VERTEX_NUM][MAX_VERTEX_NUM]; ;2. 邻接表(链式)表示法;例1:无向图的邻接表如何表示?;例2:有向图的邻接表如何表示?;例3:已知某网的邻接(出边)表,请画出该网络。;分析1:对于n个顶点e条边的无向图,邻接表中除了n个头结点外,只有2e个表结点,空间效率为O(n+2e)。
若是稀疏图(en2),则比邻接矩阵表示法O(n2)省空间。;讨论:邻接表与邻接矩阵有什么异同之处?;图的邻接表在机内如何表示? (参见教材P163);Typedef struct { //图结构
AdjList vertics ; //应包含邻接表
int vexnum, arcnum; //应包含顶点总数和弧总数
int kind; //还应说明图的种类(用标志)
}ALGraph; ; 它是有向图的另一种链式存储结构。
思路:将邻???矩阵用链表存储,是邻接表、逆邻接表的结合。
(1)开设弧结点,设5个域(每段弧是一个数据元素)
(2)开设顶点结点,设3个域(每个顶点也是一个数据元素); data : 顶点信息
firstin : 以顶点为弧头的第一条弧结点
firstout: 以顶点为弧尾的第一条弧结点;A;这是无向图的另一种链式存储结构,当对边操作时建议采用此种结构存储。
(1)设立边结点, 6个域(每条边是一个数据元素)
(2)设立顶点结点, 2个域(每个顶点也是一个数据元素); data : 存储顶点信息
firstedge : 依附顶点的第一条边结点;v1
文档评论(0)