java数据结构 邻接矩阵—深度搜索(DFS)代码实现
package 图;
import java.util.Scanner;
public class TEST {
final static int MaxInt = 32767;
final static int MVNum = 100;
static class AMGraph{
int[] vexs =new int[TEST.MVNum];
int[][] arcs = new int[TEST.MVNum][TEST.MVNum];
int vexnum,arcnum;
}
static int LocateVex(AMGraph g,int v){
for(int i = 0 ; i < g.vexnum;i++){
if(g.vexs[i] == v){
return i;
}
}
return -1;
}
static int createGraph(AMGraph g){
Scanner scan = new Scanner(System.in);
g.vexnum = scan.nextInt();
g.arcnum = scan.nextInt();
for(int i = 0; i < g.vexnum;i++){
g.vexs[i] = scan.nextInt();
}
for(int i = 0 ; i < MVNum;i++){
for(int j = 0 ; j < MVNum;j++){
g.arcs[i][j] = 0;
}
}
for(int i = 0 ; i < g.vexnum ; i++){
int v1,v2;
v1 = scan.nextInt();
v2 = scan.nextInt();
int z1 = LocateVex(g,v1);
int z2 = LocateVex(g,v2);
g.arcs[z1][z2] = 1;
g.arcs[z2][z1] = g.arcs[z1][z2];
}
for(int i = 0 ; i < g.arcnum;i++){
for(int j = 0 ; j < g.arcnum;j++){
System.out.printf(" %d",g.arcs[i][j]);
}
System.out.printf("\n");
}
return 1;
}
static boolean[] visited = {false,false,false,false,false};
static void DFS(AMGraph g,int v){
System.out.printf("%d ",v+1);
visited[v] = true;
for(int i = 0 ; i < g.vexnum ; i++)
if(g.arcs[v][i] !=0 && (!visited[i])) DFS(g,i);
}
public static void main(String[] args) {
AMGraph g = new AMGraph();
createGraph(g);
DFS(g,0);
for(int i =0; i <g.vexnum; i++)
System.out.print(" "+visited[i]);
}
}