图的深度遍历实现(邻接矩阵)
#include<iostream>
#define MAXVEX 20
#define INF 99999
using namespace std;
bool visited[MAXVEX];
typedef struct
{
char vex[MAXVEX];
int arc[MAXVEX][MAXVEX];
int VexNumber, EdgeNumber;
}MGraph;
void Create(MGraph *G)
{
cout<<"Input VexNumber and EdgeNumber:";
cin>>G->VexNumber>>G->EdgeNumber;
cout<<"Input VexNumber Information:";
for(int i=0;i<G->VexNumber;i++)
{
cin>>G->vex[i];
}
cout<<"Input AdjMatrix:";
for(int i=0;i<G->VexNumber;i++)
for(int j=0;j<G->VexNumber;j++)
{
cin>>G->arc[i][j];
if(G->arc[i][j]==0)
G->arc[i][j]=INF;
}
}
void DFS(MGraph *G, int i)
{
visited[i]=true;
cout<<G->vex[i]<<"->";
for(int j=0;j<G->VexNumber;j++)
{
if(visited[j]==false && G->arc[i][j]!=INF)
DFS(G,j);
}
}
void DFSTraverse(MGraph G)
{
for(int i=0;i<G.VexNumber;i++)
visited[i]=false;
for(int i=0;i<G.VexNumber;i++)
if(!visited[i])
DFS(&G,i);
}
int main(void)
{
MGraph G;
Create(&G);
DFSTraverse(G);
return 0;
}