【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;
        }
    }
}