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

自学考试《数据结构》第七章 图.ppt

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
无向图(网)的邻接多重链表存储表示 类似于有向图的十字链表,将无向图中表示同一条边的两个结点合在一起,只用一个结点表示一条边,即将该边的所有信息(边两端的两个顶点、与其中一个端点有相同端点的下一条边的信息等)放在一个结点中,由于无向图中的边是没有方向性的,因此所有有一个端点相同的边均链接在同一链表中,所以在顶点结点中只有一个链表的头指针。另一方面,因为每一条边有两个顶点,因此每个边结点都链接在两个链表中,但它们之间并不形成十字关系。。 #define MAX_VERTEX_NUM 20 typedef emnu {unvisited, visited} VisitIf; Typedef struct EBox { VisitIf mark; // 访问标记 int ivex, jvex;  // 该边依附的两个顶点的位置    struct EBox *ilink, *jlink; // 分别指向依附 // 这两个顶点的下一条边    InfoType *info;    // 与该边相关信息的指针   } EBox;   typedef struct {     // 顶点结点结构定义    VertexType data;    EBox *firstedge;// 指向第一条依附该顶点的边   } VexBox;   typedef struct {    // 多重链表结构定义    VexBox adjmulist[MAX_VERTEX_NUM];    int vexnum, edgenum;   // 无向图的当前 // 顶点数和边数   } AMLGraph; §7.3 图的遍历 图的遍历 对图中的每个顶点都进行一次访问且仅进行一次访问。 图中任意两个顶点之间都可能存在一条弧或边,反之也可能存在某个顶点和其它顶点之间都不存在弧或边。 确定一条搜索路径 如何确保每个顶点都被访问到; 如何确保每个顶点只被访问一次。 深度优先搜索遍历图 一、连通图的遍历 二叉树和树 无前驱的“根结点” 其他所有结点都存在一条根到该结点的路径 遍历必须也只能从根出发进行 连通图 任意两个顶点之间都有路径相通 可以从图中任意一个顶点出发进行遍历 从某个顶点V0出发深度优先搜索遍历连通图的定义为:   首先访问该顶点,然后依次从V0的各个未被访问过的邻接点出发进行深度优先搜索遍历。 类似于树的先根遍历 V0 V6 W3 V5 V8 V4 W1 W2 V7 V9 V10 V11 G1 G2 G3 因此对于图的遍历,为了确保每个顶点在遍历过程中只被访问一次,需要为每个顶点建立一个“访问标志辅助数组 visited[i],在遍历开始之前,将它们设为 FALSE,一旦第i个顶点被访问,则令 visited[i] 为 TRUE。 void DFS(Graph G, int v)  {   // 从顶点v出发递归地深度优先遍历图G   visited[v] = TRUE; VisitFunc(v); // 访问顶点 v   for ( w=FirstAdjVex(G, v); w=0; w=NextAdjVex(G, v, w) )    if (!visited[w]) DFS(G, w);// 对v的尚未访问过 // 的邻接顶点w递归调用DFS  } // DFS() 二、非连通图的遍历 对于非连通图,如何确保每个顶点都能被访问到? 只能对图中所有顶点巡查一遍挨个检查,即从第一个顶点起,如果该顶点未被访问,则从该顶点出发进行深度优先遍历,否则接着检查下一顶点,直至所有顶点都被访问到为止。 a e d c h k f b g a b c d e f 5 1 4 8 0 8 7 7 8 0 0 7 0 6 0 1 2 3 4 5 6 7 8 ^ ^ ^ ^ ^ g h k 2 ^ 3 ^ 2 5 3 ^ 4 7 5 ^ a k f g e b h c d 顶点访问序列为(以邻接表表示图): a h c g e b d k f 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0

文档评论(0)

好文精选 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档