-
图结构:表示现实世界对象与对象之间的多对多关系,存储结构有邻接矩阵和邻接表两种
/**
* 图的数据结构:采用邻接矩阵的存储方式来表示图中顶点之间的关系。实现有:求图的
*
* @author timmy1 使用二维数组来存储图中顶点的关系:数字为0表示自己,最大值表示两个顶点之间不联通, -》求顶点的入度和出度
* -》顶点a到顶点b之间的权值 ==》先创建这个图
*/
public class MyGraph {
int[][] matrix;// 矩阵
int MAX_VALUE = Integer.MAX_VALUE;
int size;
private void createGraph(int index) {
size = index;
matrix = new int[index][index];
int[] a0 = { 0, MAX_VALUE, MAX_VALUE, MAX_VALUE, 6 };
int[] a1 = { 9, 0, 3, MAX_VALUE, MAX_VALUE };
int[] a2 = { 2, MAX_VALUE, 0, 5, MAX_VALUE };
int[] a3 = { MAX_VALUE, MAX_VALUE, MAX_VALUE, 0, 1 };
int[] a4 = { MAX_VALUE, MAX_VALUE, MAX_VALUE, MAX_VALUE, 0 };
matrix[0] = a0;
matrix[1] = a1;
matrix[2] = a2;
matrix[3] = a3;
matrix[4] = a4;
}
/**
* 获取顶点的出度
* @param index
* @return
*/
public int getVertexOutDegree(int index){
int degree = 0;
for(int i=0;i<size;i++){
if(matrix[i][0] > 0 && matrix[i][0] <MAX_VALUE){
degree++;
}
}
return degree;
}
/**
* 获取顶点之间的权值
* @param i
* @param j
* @return
*/
public int getVertexWeight(int i,int j){
int weight = matrix[i][j];
weight = weight == 0? 0:weight== MAX_VALUE?-1:weight;
return weight;
}
public static void main(String[] args) {
MyGraph myGraph = new MyGraph();
myGraph.createGraph(5);
PrintUtil.print("顶点出度为:"+myGraph.getVertexOutDegree(0));
PrintUtil.print("两个顶点之间的权值为:"+myGraph.getVertexWeight(0, 3));
}
}