【正确答案】采用遍历方式判断无向图G是否连通。这里用DFS,先给visited[]数组置初值0,然后从0到g.vexnum-1对图作深度优先搜索遍历。每次遍历开始,对当前顶点作检查,看其visited数组对应值是否为0,为0则表示是一个新连通分量遍历的开始,n自增1。如此检查完所有的顶点,即可得到连通分量的总数。
由此可以写出如下程序代码:
int getnum(graph g) //求图G的连通分量
{
int i,n=0;
int visited[maxSize]; //maxSize是已经定义的常量
for(i=0;i<g.vexnum; ++i)
visited[i]=0;
for(i=0;i<g.vexnum; ++i)
if(visited[i]==0)
{
++n;
dfs(g,i,visited);
//假设此深度优先搜索函数已经定义,表示对图G,从编号为i的顶点开始,以visited
//数组作为访问标记数组,进行深度优先搜索遍历
}
return n;
}
【答案解析】