package graph;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
/**
* @author taoke
* @desc 图
* @email 1504806660@qq.com
* @date 2022/1/17
*/
public class Graph {
/**
* 顶点
*/
private final List<String> vertexList;
/**
* 边
*/
private final int[][] edges;
/**
* 边的数量
*/
private int edgesNum;
public static void main(String[] args) {
int n = 5;
Graph graph = new Graph(n);
graph.insertVertex("A");
graph.insertVertex("B");
graph.insertVertex("C");
graph.insertVertex("D");
graph.insertVertex("E");
graph.insertEdge(0, 1, 1);
graph.insertEdge(0, 2, 1);
graph.insertEdge(1, 2, 1);
graph.insertEdge(1, 3, 1);
graph.insertEdge(1, 4, 1);
graph.showGraph();
}
/**
* 初始化
*
* @param n 顶点数量
*/
public Graph(int n) {
vertexList = new ArrayList<>();
edges = new int[n][n];
edgesNum = 0;
}
/**
* 添加顶点
*
* @param vertex 顶点
*/
public void insertVertex(String vertex) {
vertexList.add(vertex);
}
/**
* 添加边
*
* @param v1 第一个顶点的下标
* @param v2 第二个顶点的下标
* @param weight 权值
*/
public void insertEdge(int v1, int v2, int weight) {
edges[v1][v2] = weight;
edges[v2][v1] = weight;
edgesNum++;
}
/**
* 获取顶点的数量
*
* @return 数量
*/
public int getVertexNum() {
return vertexList.size();
}
/**
* 获取边的数量
*
* @return 数量
*/
public int getEdgesNum() {
return edgesNum;
}
/**
* 获取顶点的值
*
* @param i 顶点的索引
* @return 顶点
*/
public String getVertexVal(int i) {
return vertexList.get(i);
}
/**
* 获取边的权值
*
* @param v1 下标
* @param v2 下标
* @return 权值
*/
public int getWeight(int v1, int v2) {
return edges[v1][v2];
}
/**
* 展示图
*/
public void showGraph() {
for (int[] line : edges) {
System.err.println(Arrays.toString(line));
}
}
}
数据结构与算法-图
于 2022-01-17 17:01:26 首次发布