【2016-d-二-3】求无向图联通分量个数,并输出联通分量的顶点集
/**
算法思想:
从任意一个结点开始,进行深度优先搜索,输出访问过的结点。
连通分量加一,再选取未被访问过的节点进行深度优先搜索。
直到所有结点都被访问完。
**/
#define maxSize 100
int visit[maxSize];
void conCom(AGraph *G)
{
int i;
int count=0;
for(i=0;i<G->n;i++)
{
if(visit[i]==0)
{
DFS(G,i);
count++;
}
}
printf("%d",count);
}
void DFS(AGraph *G,int v)
{
ArcNode *p;//边指针
visit[v]=1;//标记访问
printf("%d",v);
p=G->adjlist[v].firstarc;
while(p!=NULL)
{
if(visit[p->adjvex]==0)
{
DFS(G,p->adjvex);
p=p->nextarc;
}
}
}