第7章节图和广义表0.pptVIP

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章节图和广义表0

本节内容 复习上节课的内容 7.2 图的存储表示 一邻接矩阵法 二邻接表 7.3图的遍历 一深度优先遍历(树的先跟) 二广度优先遍历(树的层序) 7.4图的连通性问题 一普里姆算法(加点法) 二克鲁斯卡尔算法(加边法) 回顾总结 邻接矩阵存储总结 比较两种算法 算法名 普里姆算法 克鲁斯卡尔算法 时间复杂度 O(n2) O(eloge) 适应范围 稠密图 稀疏图 * 第7章图和广义表 一、图的数组存储表示(邻接矩阵法):是用两个数组分别存储图中数据元素(顶点)的信息和数据元素之间的关系(边或弧)的信息,即用矩阵来表示图中顶点之间的邻接关系。 A[i][j]={ 1 若Vi和Vj之间有边或弧存在 0 反之 2.若图G是网,则邻接矩阵定义为: A[i][j]={ wij 若Vi和Vj之间有边或弧存在 ∞ 反之 1.设G是具有n个顶点的图,则G的邻接矩阵是具有下列性质的n阶方阵: typedef struct arccell { vrtype adj; // 图用1或0表相邻否 ,网则为相应的权值 InfoType *info;//其它信息 } adjmatrix[MAX [MAX]; 邻接矩阵存储类型定义表示 用邻接矩阵表示图,除了存储用于表示顶点之间相邻关系的邻接矩阵外,还需用一个顺序表存储顶点信息。 typedef struct { // 图的定义 vertextype vexs[MAX]; // 顶点信息数组 adjmatrix arcs; // 弧的信息 (邻接矩阵) int vexnum, arcnum; // 顶点数,弧数 graphkind kind; // 图的种类标志 } mgraph; 1 输入图的种类,根据图的种类选择不同的建立方法 建立图的邻接矩阵的结构 2以建立无向网为例说明具体建立邻接矩阵的方法 ①输入图的结点个数和边的个数 ②将邻接矩阵中每个元素的值初始化为∞ ③利用循环完成结点顺序表的建立 ④利用循环完成邻接矩阵的建立 a输入两个邻接点 和邻接点之间的权值 b查找两个邻接点在顺序表的位置i,j c G-arcs[i][j]= G-arcs[i][j] =w 1. 无向图或无向网的邻接矩阵必是对称矩阵,可采用对称矩阵压缩存储表示 有向图或有向网的邻接矩阵为非对称矩阵。 2.邻接矩阵存储优点: ①判定任意两个顶点之间是否有边或弧相联 ②并容易求得各个顶点的度。 a.对于无向图,顶点vi的度是邻接矩阵中第i行或i列的元素之和。 b.对于有向图, 顶点vi的出度OD(vi)是第i行的元素之和。 顶点vj的入度ID(vj)是第j列的元素之和。 邻接点域(adjvex)指示与顶点邻接的点在图中的存储位置 数据域(info):存储和边或弧相关的信息,如权值。 链域(nextarc)指示下一条边或弧的结点位置 对图中每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点vi的边(有向图是以顶点vi为弧尾的弧) 二、图的邻接表存储 Info adjvex nextarc 弧结点arcnode 表头结点 vnode data firstarc 图的结构定义 typedef struct { vnode vertices[MAX]; //表头结点顺序表 int vexnum, arcnum; //顶点个数和边的个数 int kind; // 图的种类 } ALGraph; 1 输入图的种类,根据图的种类选择不同的建立方法 建立图的邻接表的结构 2以建立无向网为例说明具体建立邻接表的方法 ①输入图的结点个数和边的个数 ② 利用循环完成表头结点的建立 ③利用循环完成邻接表的建立 a输入两个邻接点 和邻接点之间的权值 b查找两个邻接点在顺序表的位置i,j c生成两个结点,将pi插入到i表中,将pj插入到j表中 a输入结点 b生成表头结点 c 表头结点的第一个邻接点域初始化空 ①无向图

您可能关注的文档

文档评论(0)

qiwqpu54 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档