圖___求無向圖連通分量個數
阿新 • • 發佈:2018-11-07
求無向圖連通分量個數方法:
基於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 }