採用鄰接矩陣表示圖的深度優先遍歷搜索

#include <stdio.h>
#include<string.h>

bool vis[5];

typedef struct  {
	int vexs[5]={1,2,3,4,5};
	int arc[5][5]={{0,1,0,1,0},{1,0,1,0,1},{0,1,0,1,1},{1,0,1,0,0},{0,1,1,0,0}};//生成鄰接矩陣 
	int vertexnum,arcnum;
	
}mgraph;// 圖的結構定義 
void DFS(mgraph g,int i) ;
int main(){

 mgraph g;
 int i,j;
  g.vertexnum=5;
  for(i=0;i<g.vertexnum;i++){
  
    for(j=0;j<g.vertexnum;j++) 
       printf("%d ",g.arc[i][j]);
   printf("\n"); }
memset(vis,false,sizeof(vis));//初始化所有的頂點都沒訪問過 
i=1;   
 DFS(g,i);// 從第i個節點開始對圖g進行遍歷 
return 0;}

void DFS(mgraph g,int i)  
{ 
     
    int j; 
      
        vis[i]=true;//把現在這個點設置爲已訪問  
            printf("v%d",g.vexs[i]);//把現在的這個點輸出  
                  for(j=0;j<g.vertexnum;j++)//把跟這個點有邊的未訪問的點都訪問了  
    {  
                     if(g.arc[i][j]==1 && !vis[j])//找到有邊且沒訪問過的點,就深入一層  
                                DFS(g,j);  
    }  
}  
   




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章