第五十七讲图的存储结构邻接表.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文档。上传文档
查看更多
数据结构和算法 作者:小甲鱼 让编程改变世界 Change the world by program 邻接表(无向图) 邻接矩阵看上去是个不错的选择,首先是容易理解,第二是索引和编排都很舒服~ 但是我们也发现,对于边数相对顶点较少的图,这种结构无疑是存在对存储空间的极大浪费。 V0 V1 V2 V3 顶点数组: V0 V1 V2 V3 V0 V1 V2 V3 V0 0 ∞ ∞ ∞ V1 8 0 ∞ ∞ V2 ∞ ∞ 0 ∞ V3 ∞ ∞ ∞ 0 8 邻接表(无向图) 因此我们可以考虑另外一种存储结构方式,例如把数组与链表结合一起来存储,这种方式在图结构也适用,我们称为邻接表(AdjacencyList)。 邻接表的处理方法是这样: 图中顶点用一个一维数组存储,当然,顶点也可以用单链表来存储,不过数组可以较容易地读取顶点信息,更加方便。 图中每个顶点Vi的所有邻接点构成一个线性表,由于邻接点的个数不确定,所以我们选择用单链表来存储。 邻接表(无向图) V0 V1 V2 V3 下标 data first 0 V0 1 V1 2 V2 3 V3 1 3 ^ 3 ^ 0 0 0 2 2 ^ 1 2 ^ 邻接表(有向图) 若是有向图,邻接表结构也是类似的,我们先来看下把顶点当弧尾建立的邻接表,这样很容易就可以得到每个顶点的出度: V0 V1 V2 V3 下标 data first 0 V0 1 V1 2 V2 3 V3 ^ 3 ^ 2 ^ 1 ^ 0 0 邻接表(有向图) 但也有时为了便于确定顶点的入度或以顶点为弧头的弧,我们可以建立一个有向图的逆邻接表: 此时我们很容易就可以算出某个顶点的入度或出度是多少,判断两顶点是否存在弧也很容易实现。 V0 V1 V2 V3 下标 data first 0 V0 1 V1 2 V2 3 V3 1 2 ^ 2 ^ 1 ^ 0 ^ 邻接表(网) 对于带权值的网图,可以在边表结点定义中再增加一个数据域来存储权值即可: V0 V1 V2 V3 下标 data first 0 V0 1 V1 2 V2 3 V3 ^ 3 5 ^ 2 3 ^ 1 3 ^ 0 4 0 8 5 4 8 3 代码实现 作为一个课后作业给大家自己锻炼下,小甲鱼提供的参考答案仅供参考借鉴!

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档