天天看點

JAVA實作圖的結構

/
///**
//        * 圖的資料結構:采用鄰接矩陣的存儲方式來表示圖中頂點之間的關系。實作有:求圖的
// *
//         * @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;
    }
      

繼續閱讀