JAVA实现图的结构

来源:互联网 发布:制谱软件x 编辑:程序博客网 时间:2024/06/14 19:42
////**//        * 图的数据结构:采用邻接矩阵的存储方式来表示图中顶点之间的关系。实现有:求图的// *//         * @author timmy1 使用二维数组来存储图中顶点的关系:数字为0表示自己,最大值表示两个顶点之间不联通, -》求顶点的入度和出度// *         -》顶点a到顶点b之间的权值 ==》先创建这个图// */    int[][] matrix;// 矩阵    int MAX_VALUE = Integer.MAX_VALUE;    int size;    public void FromJava() {        createGraph(5);        ViseLog.i("顶点出度为:" +getVertexOutDegree(0));        ViseLog.i("两个顶点之间的权值为:" +getVertexWeight(1, 2));    }    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 ;    }    public int getVertexWeight(int i,int j){        int weight = matrix[i][j];        weight = weight == 0? 0:weight== MAX_VALUE?-1:weight;        return weight;    }
原创粉丝点击