#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);
}
}
採用鄰接矩陣表示圖的深度優先遍歷搜索
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.