1. 程式人生 > >圖___求無向圖連通分量個數

圖___求無向圖連通分量個數

求無向圖連通分量個數方法:

   基於DFS,從某一頂點出發遍歷圖,for迴圈,改變起始頂點,count計數。

程式碼如下:

void DFSTraverse(ALGraph G){										//深度遍歷圖
	void DFS(ALGraph G,int i);
	int count=0;
	for(int i = 0; i < G.vexnum; i++)  //初始化visited[]陣列,設為都未訪問過
		visited[i]=0;
	for(int j = 0; j < G.vexnum; j++){
		if(!visited[j]){
			 DFS(G,j);	
		     count++;
		}                //未訪問,則訪問結點	    
	}
	printf("連通分量的個數:%d \n",count);					
}//DFSTraverse
void DFS(ALGraph G,int i)  
{		
	printf("%d ",i);  
    fflush(stdout);  
    visited[i]=1;  

	ArcNode * p;
	p=G.adjlist[i].firstarc;//邊表頭指標
   while (p!=NULL)                   //邊表 
   { 
	   if (!visited[p->adjvex])  
          DFS(G,p->adjvex);

	     p=p->nextarc;  
   }//while  
}