图的基本念和存储结构.pptVIP

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

图的存储表示--邻接表 1 2 3 4 5 6 7 6 (empty) 4,7 3,6,7 6 4,5 2,3,4 对于稀疏(sparse)图合适。 这种邻接表本身可以被保存在任何种类的List中。ArrayList和LinkedList。 1 3 2 5 6 7 4 图的存储表示--邻接表 邻接表:图的链式存储结构 对图中每个顶点建立一个单链表,第i个单链表中的节点表示依附顶点Vi的边。 对有向图来说,是指以顶点Vi为弧尾的弧。 图的存储表示--邻接表 0 1 2 3 4 5 A B C D E F 1 4 0 4 3 5 2 5 0 1 1 2 5 3 B A C D F E 1)无向图的邻接表 图的存储表示--邻接表 A B E C D 0 1 2 3 4 A B C D E 1 4 3 0 1 2 2 2)有向图的邻接表--每个顶点链接的是以该顶点为弧尾的弧 但,在有向图的邻接表中不易找到指向该顶点的弧。 图的存储表示--邻接表 A B E C D 3)有向图的逆邻接表--每个顶点链接的是指向该顶点的弧 0 1 0 1 2 3 4 A B C D E 3 2 0 3 4 图的存储表示--邻接表 邻接表:图的链式存储结构 adjvex nextarc info 邻接点域 链域 数据域(存放权值等) data firstarc 数据域 指向链表中第一个节点 弧节点类 (链表节点类): 顶点节点类: 0 1 0 1 2 3 4 A B C D E 3 2 0 3 4 firstarc,弧节点类都属于链表的Node类。 图的存储表示--邻接表 0 1 0 1 2 3 4 A B C D E 3 2 0 3 4 public class VertexAnyType { AnyType data; Arc firstArc; //boolean visited; } public class Arc{ int adjVex; Arc nextArc; //int weight; } 图的存储表示--邻接表 图的邻接表: 1、容易找到任意顶点的一个邻接点 2、但是要判定任意两个顶点(vi,vj)之间是否有边或者弧相连,需要搜索第i个或者第j个链表,不如邻接矩阵方便。 存储结构的比较 邻接矩阵可用于DG、UDG、DN、UDN 邻接表可用于DG、UDG、DN、UDN 一、应用范围 存储结构的比较 邻接矩阵: n + n2 邻接表用于DG和DN:n + e或者n + 2e;用于UDG和UDN:n + 2e 二、存储空间 存储结构的比较 三、对操作的支持 1、对顶点的访问 locateVex(u); //返回u的位置 getVex(v); // 返回 v 的值。 putVex(u, value); // 对 u 赋值value。 存储结构的比较 2、插入和删除顶点 都是对存放顶点数组元素的操作 但是对邻接矩阵,还要修改邻接矩阵 insertVex(v); //在图G中增添新顶点v。 deleteVex(v); // 删除G中顶点v及其相关的弧。 存储结构的比较 3、插入和删除弧 insertArc(v, w); deleteArc(v, w); 邻接矩阵:修改边v, w(以及w,v) 邻接表:无向图,修改两个顶点的链表;有向图,修改一个(或两个)顶点的链表 存储结构的比较 4、邻接点 firstAdjVex(v); // 返回 v 的“第一个邻接点”。若没有邻接点,则返回-1。 nextAdjVex(v, w); // 返回 v 的(相对于 w 的) “下一个邻接 点”。若 w 是 v 的最后一个邻接点,则返回-1。 存储结构的比较 邻接矩阵:第v行 邻接表:第v个链表 5、邻接边 课堂练习 V1 V2 V3 V4 V5 1、邻接矩阵 2、邻接表 * * 图和图的存储结构 图的定义和术语 图的存储表示 小结 用java语言描述图的存储结构 课堂练习 1. 图的定义 2. 图的名词和术语 3. 图的基本操作 图和图的存储结构 图的定义 图(graph)是由一个顶点(vertex)集 V 和一个边(edge|弧arc)集 E构成的数据结构。 Graph = (V, E ) E={(v,w| v,w∈V)} 每条边(edge)是一副点对(v,w),其中v,w ∈ V。表示从 v 到 w 的一条边(弧),称 v 为弧尾(tail),w 为弧头(head)。 图的定义—有向图 如果“弧”是有方向的,则称由顶点集和弧集构成的图为有向图(digraph)。 E A C B D 例如: G1 = (V1, E1) V1={A, B, C, D, E} E

文档评论(0)

189****1013 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档