java graph 数据结构_数据结构图-JAVA实现

本文介绍了一个使用JAVA实现的图数据结构,包括顶点数量、顶点数组和邻接矩阵。提供了计算顶点出度、入度以及获取两个顶点间权值的方法,并通过实例展示了如何初始化和操作图结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.sunny.graph.matrix;

public class Graph {

private int vertexSize;//顶点数量

private int [] vertexs;//顶点数组

private int[][] matrix;//邻接矩阵

private final static int MAX_WEIGHT = 1000;//权值即图的无穷大。这里只是做了最大的定义

public Graph(int vertexSize) {

super();

this.vertexSize = vertexSize;

matrix = new int[vertexSize][vertexSize];

vertexs = new int[vertexSize];

for (int i = 0; i < vertexSize; i++) {

vertexs[i] = i;

}

}

public int[] getVertexs() {

return vertexs;

}

public void setVertexs(int[] vertexs) {

this.vertexs = vertexs;

}

/**

* 计算顶点的出度 横排是出度,竖列是入度

* */

public int getOutDegree(int index){

int degree = 0;

for (int j = 0; j < vertexSize; j++) {

int weight = matrix[index][j];

if (weight != 0 && weight !=MAX_WEIGHT){

degree++;

}

}

return degree;

}

/**

* 计算顶点的入度 横排是出度,竖列是入度

* */

public int getIntDegree(int index){

int degree = 0;

for (int j = 0; j < vertexSize; j++) {

int weight = matrix[j][index];

if (weight != 0 && weight !=MAX_WEIGHT){

degree++;

}

}

return degree;

}

/**

* 获取两个顶点之间的权值

* @param args

* @return

*/

public int getWeight(int v1 , int v2) {

int weight = matrix[v1][v2];

return weight == 0 ? 0:(weight == MAX_WEIGHT?-1:weight);

}

//获取V1的邻接点 V1的出度点 V1的入度点

//V2-V4的最短路径 拓普排序

public static void main(String[] args) {

Graph graph = new Graph(5);

int[] a0 = new int[]{0,MAX_WEIGHT ,MAX_WEIGHT, MAX_WEIGHT, 6};

int[] a1 = new int[]{9,0 ,3, MAX_WEIGHT, MAX_WEIGHT};

int[] a2 = new int[]{2,MAX_WEIGHT ,0, 5, MAX_WEIGHT};

int[] a3 = new int[]{MAX_WEIGHT,MAX_WEIGHT ,MAX_WEIGHT, 0, 1};

int[] a4 = new int[]{MAX_WEIGHT,MAX_WEIGHT ,MAX_WEIGHT, MAX_WEIGHT, 0};

graph.matrix[0] = a0;

graph.matrix[1] = a1;

graph.matrix[2] = a2;

graph.matrix[3] = a3;

graph.matrix[4] = a4;

// int degree = graph.getOutDegree(4);

// System.out.println("V" + 4 + "的出度是" + degree);

//

// int degree2 = graph.getIntDegree(0);

// System.out.println("V" + 0 + "的入度是" + degree2);

int weight = graph.getWeight(0, 0);

System.out.println("V0 - V4" + "的权值是" + weight);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值