void matrix_make(Graph &g){ //由邻接表构造邻接矩阵
Arcnode *p = new Arcnode;
memset(g.arc_matrix,0,sizeof(g.arc_matrix));
for(int i = 1;i <= g.vex_sum;i++)
{
p = g.vexlist[i].firstarc;
while(p){
g.arc_matrix[i][p->adjvex] = 1;
p = p->nextarc;
}
}
for(int i = 1;i <= g.vex_sum;i++)
for(int j = 1;j <= g.vex_sum;j++)
if(g.arc_matrix[i][j] == 1)g.arc_matrix[j][i] = 1;
}
void dfs(Graph &g,int v){
visit[v] = 1;
cout<<g.vexlist[v].data<<endl;
for(int i = 1;i <= g.vex_sum;i++)
{
if(g.arc_matrix[i][v] == 1 && visit[i] == 0)dfs(g,i);
}
}
void dfs_travel(Graph &g){
for(int i = 1;i <= g.vex_sum;i++)visit[i] = 0;
for(int i = 1;i <= g.vex_sum;i++)//对于连通图没有实际意义对于非连通图有查漏作用
if(!visit[i])dfs(g,i);
}
完整代码: