网站大量收购独家精品文档,联系QQ:2885784924

图2-烟台南山学院.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
图2-烟台南山学院

二、邻接表(链式)表示法 例1:无向图的邻接表 例3:已知某网的邻接(出边)表,请画出该网络。 邻接表存储法的特点: 讨论:邻接表与邻接矩阵有什么异同之处? 图的邻接表存储表示(参见教材P163) 三、十字链表 (适用于有向图) 四、邻接多重表 (适用于无向图) 三、十字链表 十字链表存储结构描述: 例:画出有向图的十字链表。 四、邻接多重表(自学) 例:画出无向图的邻接多重表 7.3 图的遍历 一、深度优先搜索( DFS ) 深度优先搜索(遍历)步骤: 讨论1:计算机如何实现DFS? 讨论2: DFS算法如何编程? 讨论3:在图的邻接表中如何进行DFS? 讨论4: 邻接表的DFS算法如何编程? DFS 算法效率分析: 二、广度优先搜索( BFS ) 广度优先搜索(遍历)步骤: 讨论1:计算机如何实现BFS? 讨论2: BFS算法如何编程? BFS 算法效率分析: * * 数据结构与算法 Data Structure Algorithms   烟台南山学院信息科技学院 数据结构与算法教学组 对每个顶点vi 建立一个单链表,把与vi有关联的边的信息(即度或出度边)链接起来,表中每个结点都设为3个域; 每个单链表还应当附设一个头结点(设为2个域),存vi信息; info nextarc adjvex firstarc data 表结点 头结点 邻接点域,表示vi一个邻接点的位置 链域,指向vi下一个边或弧的结点 数据域,与边有关信息(如权值) 数据域,存储顶点vi 信息 链域,指向单链表的第一个结点 每个单链表的头结点另外用顺序存储结构存储。 v1 v2 v3 v5 v4 v4 邻接表 4 3 2 1 0 ^ 1 3 3 4 ^ 1 4 2 ^ 0 例2:有向图的邻接表 v1 v2 v3 v4 V4 V3 ^ V2 V1 2 ^ 3 ^ 0 ^ 1 邻接表(出边) V4 V3 V2 V1 ^ 3 ^ 0 ^ 2 ^ 0 逆邻接表(入边) 注:邻接表不唯一,因各个边结点的链入顺序是任意的。 v5 v4 v3 v2 v1 2 3 ^ 1 4 2 ^ 0 80 64 1 2 5 当邻接表的存储结构形成后,图便唯一确定! 分析1: 对于n个顶点e条边的无向图,邻接表中除了n个头结点外,只有2e个表结点,空间效率为O(n+2e)。 若是稀疏图(en2),则比邻接矩阵表示法O(n2)省空间。 分析2: 在有向图中,邻接表中除了n个头结点外,只有e个表结点,空间效率为O(n+e)。若是稀疏图,则比邻接矩阵表示法合适。 —它其实是对邻接矩阵法的一种改进 怎样计算无向图顶点的度? 邻接表的缺点: 怎样计算有向图顶点的出度? 怎样计算有向图顶点的入度? 怎样计算有向图顶点Vi的度: 需遍历全表 邻接表的优点: TD(Vi)=单链表中链接的结点个数 OD(Vi)=单链出边表中链接的结点数 I D( Vi ) =邻接点为Vi的弧个数 TD(Vi) = OD( Vi ) + I D( Vi ) 空间效率高;容易寻找顶点的邻接点; 判断两顶点间是否有边或弧,需搜索两结点对应的单链表,没有邻接矩阵方便。 1. 联系:邻接表中每个链表对应于邻接矩阵中的一行,链表中结点个数等于一行中非零元素的个数。 2. 区别: ① 对于任一确定的无向图,邻接矩阵是唯一的(行列号与顶点编号一致),但邻接表不唯一(链接次序与顶点编号无关)。 ② 邻接矩阵的空间复杂度为O(n2),而邻接表的空间复杂度为O(n+e)。 3. 用途:邻接矩阵多用于稠密图的存储(e接近n(n-1)/2);而邻接表多用于稀疏图的存储(en2) #define MAX_VERTEX_NUM 20 //假设的最大顶点数 Typedef struct ArcNode { int adjvex; //该弧所指向的顶点位置 struct ArcNode *nextarcs; //指向下一条弧的指针 InfoArc *info; //该弧相关信息的指针 } ArcNode; Typedef struct VNode{ //顶点结构 VertexType data; //顶点信息 ArcNode * firstarc; //指向依附该顶点的第一条弧的指针 }VNode, AdjList[ MAX_VERTEX_NUM ]; Typedef struct { //图结构 AdjList vertics ; //应包含

文档评论(0)

daoqqzhuan3 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档