import java.util.Scanner;
public class Adjacency_Matrix {
public static void main(String args[]){
print_struct ps=new print_struct();
struct G=new struct();
method m=new method();
ps.print_DFS(m.CreateMGraph(G));
//struct G1;
//G1=m.CreateMGraph(G);
//System.out.print("\n");
//m.Print(G1);
}
}
class struct{
int nodeNumber;
int edgeNumber;
int infinity=0;
int maxvex=100;
String[] vexs=new String[5];
int arcs[][]=new int[5][5];
}
class print_struct{
boolean[] visited_nodes=new boolean[5];
public void DFS(struct G,int i){
int j;
visited_nodes[i]=true;
System.out.println(G.vexs[i]);
for (j=0;j<G.vexs.length;j++){
if (G.arcs[i][j]!=0 && visited_nodes[j]==false){
DFS(G,j);
}
}
}
public void print_DFS(struct G){
int i;
for (i=0;i<G.vexs.length;i++){
visited_nodes[i]=false;
}
System.out.println("深度遍历标记初始化完成");
int j;
for (j=0;j<G.vexs.length;j++){
if (!visited_nodes[j]){
DFS(G,j);
}
}
}
}
class method{
public struct CreateMGraph(struct G){
int i,j,k,w;
System.out.println("请输入顶点数与边数:");
Scanner sc=new Scanner(System.in);
G.nodeNumber=sc.nextInt();
Scanner sc2=new Scanner(System.in);
G.edgeNumber=sc2.nextInt();
System.out.println("顶点数与边数存储完毕");
for (i=0;i<G.nodeNumber;i++){
System.out.println("请输入顶点信息:");
Scanner sc3=new Scanner(System.in);
G.vexs[i]=sc3.next();
}
System.out.println("顶点信息存储完毕");
for (i=0;i<G.nodeNumber;i++){
for (j=0;j<G.nodeNumber;j++){
G.arcs[i][j]=G.infinity;
}
}
System.out.println("结点关联性初始化完成");
for (k=0;k<G.edgeNumber;k++) {
System.out.println("请输入矩阵坐标(vi,vj)与边权值(w):");
Scanner sc4 = new Scanner(System.in);
i = sc4.nextInt();
Scanner sc5=new Scanner(System.in);
j = sc5.nextInt();
Scanner sc6=new Scanner(System.in);
w = sc6.nextInt();
G.arcs[i][j] = w;
G.arcs[j][i] = G.arcs[i][j];
System.out.println("本轮权值为" + G.arcs[i][j]);
}
System.out.println("无向图构造完毕");
for (i=0;i<G.nodeNumber;i++){
for (j=0;j<G.nodeNumber;j++) {
System.out.print(" "+G.arcs[i][j]);
}
System.out.print("\n");
}
return G;
}
public void Print(struct G){
int i;
int j;
for (i=0;i<G.nodeNumber;i++){
for (j=0;j<G.nodeNumber;j++) {
System.out.print(G.arcs[i][j]);
}
System.out.print("\n");
}
}
}
Java实现无向邻接矩阵的创建与深度优先遍历(DFS)
于 2022-09-15 11:45:47 首次发布