#include<stdio.h>
#include<stdlib.h>
#define MaxVerexNum 100
typedef struct
{
int Vex[MaxVerexNum];//顶点的数目
int Edge[MaxVerexNum][MaxVerexNum];//邻接矩阵
int vexnum,arcnum;//图当前的顶点数和弧数
}MGraph;//图的邻接矩阵定义
int visited[5];//访问标记数组
void DFS(MGraph G,int v)
{
int i,j;
printf("%d\t",v);
visited[v]=1;
for(j=1;j<=G.vexnum;j++)
{
if(visited[j]==0&&G.Edge[v][j]==1)
{
DFS(G,j);
}
}
}
void DFSTraverse(MGraph G)
{
int i;
for(i=1;i<=G.vexnum;i++)
{
visited[i]=0;//初始化标记数组
}
for(i=1;i<=G.vexnum;i++)
{
if(visited[i]==0)
{
DFS(G,i);//深度优先遍历
}
}
}
int main()
{
MGraph G;
int i,j;
G.vexnum=5;
G.arcnum=6;
for(i=1;i<=5;i++)
{
for(j=1;j<=5;j++)
{
G.Edge[i][j]=0;
}
}
G.Edge[1][2]=G.Edge[2][1]=1;
G.Edge[1][4]=G.Edge[4][1]=1;
G.Edge[2][3]=G.Edge[3][2]=1;
G.Edge[2][5]=G.Edge[5][2]=1;
G.Edge[3][4]=G.Edge[4][3]=1;
G.Edge[3][5]=G.Edge[5][3]=1;
DFSTraverse(G);//深度优先遍历
return 0;
}
数据结构——图的深度优先遍历(邻接矩阵法)
最新推荐文章于 2023-11-18 14:07:14 发布