java邻接矩阵创建有向图_【一个数据结构(java版)问题?分别对以邻接矩阵和邻接表存储的有向图,实现下列操作(1)求图中的边数(2)求各顶点的入度和出度(3)判断任意两个顶点之间是否存在一条路径,...

本文展示了如何使用Java创建一个有向图,并通过邻接矩阵进行表示。代码示例包括初始化有向图、打印邻接矩阵、获取边数、计算顶点的入度和出度以及判断路径存在性。
摘要由CSDN通过智能技术生成

我这个写的很简单,对于G=(V,E),各个顶点是以从1~V的连续数字来表示的,存数邻接表采用的是一个2维数组:

import java.util.*;

public class test {

public static void main(String [] args) {

// 以邻接表数组初始化有向图

digraph dg = new digraph(

new int[]{1,2,3},

new int[]{2,3},

new int[]{3,4},

new int[]{4,2,5},

new int[]{5,2}

);

dg.adjListPresent();

dg.adjMatrixPresent();

System.out.println("Edges: " + dg.getEdges());

System.out.print("In-Degree:\t");

for(int t : dg.getAdjHeads()) // 输出每个顶点的入度

System.out.print(t + "=" + dg.getInDegree(t) + " ");

System.out.println();

System.out.print("Out-Degree:\t");

for(int t : dg.getAdjHeads()) // 输出每个顶点的出度

System.out.print(t + "=" + dg.getOutDegree(t) + " ");

System.out.println();

dg.searchPath(1, 5);

}

}

// 有向图类

class digraph {

int [][] g;

int edges;

int heads;

public digraph(int[]...a){

int i = 0;

edges = 0;

heads = a.length;

g = new int[heads][];

for(int[] e : a) {

g[i++] = e;

edges += e.length - 1;

}

}

// 邻接表

public void adjListPresent() {

System.out.println("AdjList:");

for(int e[] : g) {

for(int i = 0; i < e.length; ++i)

System.out.print(e[i]+(i == e.length-1 ? "" : "->"));

System.out.println();

}

}

作业帮用户

2017-10-26

举报

6c0a0adef10d1043fa4f41a7897345ed.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值