741无向图的连通分量和生成树.doc

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

7.4.1无向图的连通分量和生成树。 void DFSForest(Graph G,CSTree T) //建立无向图G的深度优先生成森林的 //(最左)孩子(右)兄弟链表T。 { T=NULL; for(v=0;vG.vexnum;++v) visited[v]=FALSE; for(v=0;vG.vexnum;++v) { if(!visited[v]) //第v顶点为新的生成树的根节点。 { p=(CSTree)malloc(sizeof(CSNode)); //分配根节点。 *p={GetVex(G,v),NULL,NULL}; //给该节点赋值。 if(!T) T=p; //是第一棵生成树的根(T的根)。 else q-nextSibling=p; //是其他生成树的根(前一棵的根的“兄弟”)。 q=p; //q指示当前生成树的根。 DFSTree(G,v,p); //建立以p为根的生成树。 }// if(!visited[v]) }// for(v=0;vG.vexnum;++v) }// DFSForest Void DFSTree(Graph G,int v,CSTree T) //从第v个顶点出发深度优先遍历图G,建立以T为根的生成树。 { visited[v]=TRUE;first=TRUE; for(w=FirstAdjVex(G,v);w;w=NextAdjVex(G,v,w)) { if(!visited[w]) { p=(CSTree)malloc(sizeof(CSNode)); //分配孩子节点。 *p={GetVex(G,w),NULL,NULL}; if(first) //w是v的第一个未被访问的邻接顶点 { //是根的左孩子节点。 T-lchild=p;first=FALSE; }// if(first) else //w是v的其它未被访问的邻接顶点 { //是上一邻接顶点的右兄弟节点。 q-nextsibling=p; }// else q=p; DFSTree(G,w,q); //从第w个顶点出发深度优先遍历图G,建立子生成树q。 }// if(!visited[w]) }// for(w=FirstAdjVex(G,v); }// DFSTree 7.4.2有向图的强连通分量。 asdfasdfdfasd G4 V8h V7g V6f V5e V4d V2b V3c V1a G3 H G E D F C B A K I J L M V1 V2 V4 V8 V5 V3 V7 V6 G4的深度优先生成树 V8 V7 V6 V5 V2 V3 V1 V4 G4的广度优先生成树 A L F C M B J D E G K H I G3的深度优先生成森林 ∧ 6 10 7 H 8 10 6 G ∧ 7 ∧ 0 5 F G3的邻接表 ∧ 1 ∧ 3 ∧ 4 ∧ 0 ∧ 0 12 4 E ∧ 5 3 D 2 C 1 ∧ B 11 0 A 9 11 12 M ∧ 11 12 9 J ∧ 0 ∧ 6 8 I 9 12 11 L ∧ 6 7 10 K ∧ 2 ∧ 1

文档评论(0)

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

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

1亿VIP精品文档

相关文档