第六章图解释.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文档。上传文档
查看更多
基于邻接表的连通图基本操作——广度优先遍历 void BFS (ALGraph G, int v,int visited[]) { InitQueue(Q); printf(G.adjlist[v].vertex); visited[v]=1; EnQueue(Q,v); // 顶点编号进队列 while (!EmptyQueue(Q)) { DeQueue(Q,v); p=G.adjlist[v].firstedge; while (p!=NULL) { j= p-adjvex; //获取有邻接关系的顶点编号 if (visited[j]==0) { printf(G.adjlist[j].vertex); visited[j]=1; EnQueue(Q,j); //有邻接关系的顶点编号进队列 } p=p-next;//找下一个邻接点 } } } 6.3 图的遍历 若图G中的任意两个结点之间不多于一条无向边(或不多于一条同向弧),且任何结点无环,则称G为简单图 * 共n个结点的图中,与任意一个结点邻接的结点个数为n-1个,也就是对每一个结点来说都与之有n-1条边相连,共n个结点,所以为n(n-1),但无向图中重复算了一遍,所以除2,有向图就不除 * 在图G中的任意一条边e ? E,都对其联结的结点贡献度数2,? d(v) = 2|E| * * typedef struct ArcNode { int adjvex; // 该弧所指向的顶点的位置 struct ArcNode *nextarc; // 指向下一条弧的指针 } ArcNode; * 作业 1.无向图操作 (1)建立无向图的邻接矩阵存储 (2)输出该矩阵 2.有向网操作 (1)建立有向网的邻接链表存储 (2)输出邻接表 图的遍历操作 图的遍历是从图中某一顶点出发,对图中所有顶点访问一次且仅访问一次。 6.3 图的遍历 抽象操作,可以是对结点进行的各种处理,这里简化为输出结点的数据。 图的遍历操作要解决的关键问题 ① 在图中,如何选取遍历的起始顶点? 在线性表中,数据元素在表中的编号就是元素在序列中的位置,因而其编号是唯一的; 在树中,将结点按层序编号,由于树具有层次性,因而其层序编号也是唯一的; 在图中,任何两个顶点之间都可能存在边,顶点是没有确定的先后次序的,所以,顶点的编号不唯一。 为了定义操作的方便,将图中的顶点按任意顺序排列起来,比如,按顶点的存储顺序。 解决方案:从编号小的顶点开始 。 6.3 图的遍历 ② 从某个点起始可能到达不了所有其它顶点,怎么办? 图的遍历操作要解决的关键问题 解决方案:多次调用从某顶点出发遍历图的算法。 下面仅讨论从某顶点出发遍历图的算法。 6.3 图的遍历 ③ 因图中可能存在回路,某些顶点可能会被重复访问,那么如何避免遍历不会因回路而陷入死循环。 ④ 在图中,一个顶点可以和其它多个顶点相连,当这样的顶点访问过后,如何选取下一个要访问的顶点? 图的遍历操作要解决的关键问题 解决方案:附设访问标志数组visited[n] 。 解决方案:深度优先遍历和广度优先遍历。 6.3 图的遍历 1. 深度优先遍历 基本思想 : ⑴ 访问顶点v; ⑵ 从v的未被访问的邻接点中选取一个顶点w,从w出发进行深度优先遍历; ⑶ 重复上述两步,直至图中所有和v有路径相通的顶点都被访问到。 6.3 图的遍历 深一层递归 递归返回 深度优先遍历序列?入栈序列?出栈序列? V1 V3 V2 V4 V5 V6 V7 V8 V1 遍历序列: V1 V2 V2 V4 V4 V5 V5 6.3 图的遍历 深一层递归 递归返回 深度优先遍历序列?入栈序列?出栈序列? V1 V3 V2 V4 V5 V6 V7 V8 V1 遍历序列: V1 V2 V2 V4 V4 V5 V8 V8 6.3 图的遍历 深一层递归 递归返回 深度优先遍历序列?入栈序列?出栈序列? V1 V3 V2 V4 V5 V6 V7 V8 V1 遍历序列: V1 V2 V2 V4 V4 V5 V8 6.3 图的遍历 深一层递归 递归返回 深度优先遍历序列?入栈序列?出栈序列? V1 V3 V2 V4 V5 V6 V7 V8 V

文档评论(0)

希望之星 + 关注
实名认证
文档贡献者

我是一名原创力文库的爱好者!从事自由职业!

1亿VIP精品文档

相关文档