实现步骤
1、首先定义两个全局变量一维数组vextex和二维数组arcs,vextex用来保存所有的顶点,arcs表示邻接矩阵,private String[] vextex;private int[][] arcs;
2、由方法**LocateVertex(String value)**找到value在图中的位置,即value在一维数组vextex中的序号。
3、在插入方法中传入两个顶点和相应的权值insertUDN(String v1,String v2,int weight),在方法中调用LocateVertex(String value)则能得到两个顶点在图中的位置。
代码
package com.liwei.datastruct;
import java.lang.reflect.Array;
import java.util.Arrays;
//创建一个无向网
public class CreateUDN {
private String[] vextex; //保存所有的顶点
private int[][] arcs; // 生成的无向网保存在二维数组中
public static void main(String[] args) {
String[] vextex = {"A","B","C","D","E"};
CreateUDN createUDN = new CreateUDN(5,vextex);
createUDN.insertUDN("A","B",1);
createUDN.insertUDN("A","C",1);
createUDN.insertUDN("B","C",1);
createUDN.insertUDN("B","D",1);
createUDN.insertUDN("B","E",1);
createUDN.Show();
}
//初始化 n为顶点个数, vextex为传入顶点向量
public CreateUDN(int n,String[] vextex){
arcs = new int[n][n];
this.vextex=vextex;
}
// 将两个顶点和弧插入对应的图中
public int[][] insertUDN(String v1,String v2,int weight){
//分别找出v1,v2在图中对应的位置
int M = LocateVertex(v1);
int N = LocateVertex(v2);
//由于是无向图,则双向赋相同值,如果的有向图则是单向
arcs[M][N] = weight;
arcs[N][M] = weight;
return arcs;
}
//找到当前两个顶点和弧的位置
public int LocateVertex(String value){
int vexnum = vextex.length;
int i = 0;
for (int j = 0; j <vexnum; j++) {
if (vextex[j].equals(value)){
i = j ;
break;
}
}
return i;
}
// 输出最后生成的无向网(邻接矩阵)
public void Show(){
for (int[] arc : arcs) {
System.out.println(Arrays.toString(arc));
}
}
}