#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);
}
}