- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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)