美文网首页
数据结构图-JAVA实现

数据结构图-JAVA实现

作者: 浩均 | 来源:发表于2017-11-09 10:57 被阅读0次

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);
}

}

相关文章

  • 数据结构图-JAVA实现

    package com.sunny.graph.matrix; public class Graph {priva...

  • Java集合框架整理(一)

    Java集合框架结构图完整版 在完整版的结构图中Collection集合和Map下有许多未实现的抽象类(Ab...

  • java.util.LinkedList源码解析

    java集合框架图 所属包 继承与实现关系 准备知识 结构图: ①LinkedList是一种双向链表。②根据双向链...

  • java面试集

    Java体系结构图 1. HashMap的底层数据结构 HashMap由数组+链表组成的,数组是HashMap的...

  • 集合-hashMap

    0. HashMap的数据结构 0.1 成员变量 0.2 数据结构图 java8最新引入红黑树,当链表的长度大于8...

  • JVM学习笔记之Java内存区域与OOM【二】

    Java 内存区域与 OOM 虚拟机基本结构图示 一、运行时数据区域 运行时数据区域 图示 标注颜色的两块区域:所...

  • Dubbo启动源码解析二

    一、ServiceBean继承结构图ServiceBean 从结构图中,我们看到,ServiceBean实现了Se...

  • 0x7e相关转义

    PPP数据成帧转义,C语言实现 PPP数据成帧转义,JAVA语言实现 串口数据成帧转义,C语言实现 串口数据成帧转...

  • MyBatis总结。

    java连接数据库一共有三种方式以及其优缺点: MyBatis层次结构图: Mybatis是一个半自动化的数据库持...

  • Activity启动模式精讲

    讲解本技术点之前需要准备的技术点回顾 栈数据结构 数据结构图文解析之:栈的简介及C++模板实现 - melonst...

网友评论

      本文标题:数据结构图-JAVA实现

      本文链接:https://www.haomeiwen.com/subject/ocdpmxtx.html