1. 程式人生 > >鄰接表有向圖(三)之 Java詳解

鄰接表有向圖(三)之 Java詳解

/* 
 * 建立圖(自己輸入資料)
 */
public ListDG() {

    // 輸入"頂點數"和"邊數"
    System.out.printf("input vertex number: ");
    int vlen = readInt();
    System.out.printf("input edge number: ");
    int elen = readInt();
    if ( vlen < 1 || elen < 1 || (elen > (vlen*(vlen - 1)))) {
        System.out.printf("input error: invalid parameters!\n");
        return ;
    }

    // 初始化"頂點"
    mVexs = new VNode[vlen];
    for (int i = 0; i < mVexs.length; i++) {
        System.out.printf("vertex(%d): ", i);
        mVexs[i] = new VNode();
        mVexs[i].data = readChar();
        mVexs[i].firstEdge = null;
    }

    // 初始化"邊"
    //mMatrix = new int[vlen][vlen];
    for (int i = 0; i < elen; i++) {
        // 讀取邊的起始頂點和結束頂點
        System.out.printf("edge(%d):", i);
        char c1 = readChar();
        char c2 = readChar();
        int p1 = getPosition(c1);
        int p2 = getPosition(c2);
        // 初始化node1
        ENode node1 = new ENode();
        node1.ivex = p2;
        // 將node1連結到"p1所在連結串列的末尾"
        if(mVexs[p1].firstEdge == null)
          mVexs[p1].firstEdge = node1;
        else
            linkLast(mVexs[p1].firstEdge, node1);
    }
}