使用邻接矩阵的形式创建 图
import java.util.ArrayList;
import java.util.Arrays;
public class Demo01 {
//需要 arrayList 来存储我们的顶点
private ArrayList<String> vertexList; //这里顶点的数据结构是ArrayList 使用泛型进行了数据类型的规定
private int [][]edges;//二维数组实现我们的矩阵表示 存储图的对应的邻接矩阵
private int numOfEdges ;//表示边的数目
public static void main(String[] args) {
//测试我们的图是否创建完成
int n=5;
String VertexValue[]={"A","B","C","D","E"};
//创建我们的图对象
Demo01 demo=new Demo01(n);
for(String value:VertexValue){
demo.insertVertex(value); //循环实现数据的添加
}//如果仅仅将顶点添加到图中 , 那么矩阵当中的值就都是0 因为没有进行边得添加
//添加边
//只能够一步一步的添加 A-B A-C B-C B-D B-E
demo.insertEdge(0,1,1);
demo.insertEdge(0,2,1);
demo.insertEdge(1,2,1);
demo.insertEdge(1,3,1);
demo.insertEdge(1,4,1);
//显示我们所创建的邻接矩阵
demo.showDemo01();
}
public Demo01(int n){
//初始化矩阵以及 顶点
//对于n个顶点的图 所对应的矩阵的规模为
edges=new int[n][n];
//所对应的顶点数组的规模为
vertexList =new ArrayList<String>(n); //放了n个顶点到数组中
}
//插入节点
public void insertVertex(String vertex){
vertexList.add(vertex); //将顶点添加到我们所创立的数组中
}
/**
* //添加边 使用邻接矩阵的方式对图进行表示 我们需要做的就是 将矩阵当中所对应的数值设置为1 就可以
* @param v1 表示的是 第几个顶点所对应的下标
* @param v2 同样的 表示的是第几个元素所对应的下标
* @param weight
*/
public void insertEdge(int v1,int v2,int weight){
edges[v1][v2]=weight;
edges[v2][v1]=weight; //无向图当中 双向的权值是相同的
//边的数目实现++
numOfEdges++; //对边的数目的变化进行记录
}
//返会图中顶点的个数 利用的就是 集合的特性
public int getNumVertex(){
return vertexList.size();
}
//返回图中的边的个数
public int getNumOfEdges(){
return numOfEdges;
}
//返回节点(i) (i作为下标出现 ) 所对应的数据
public String getValueByIndex(int i){
return vertexList.get(i); //这些方法所对应的其实还是集合中所对应的方法
}
//返回所对应的相关的权值
public int getWeight(int v1,int v2){
return edges[v1][v2];
}
//显示图对应的矩阵
public void showDemo01(){
for(int [] link : edges){
System.out.println(Arrays.toString(link));
}
}
}
|