1. 程式人生 > >鄰接矩陣無向圖(一)之 C語言詳解

鄰接矩陣無向圖(一)之 C語言詳解

/*
 * 建立圖(用已提供的矩陣)
 */
Graph* create_example_graph()
{
    char vexs[] = {'A', 'B', 'C', 'D', 'E', 'F', 'G'};
    char edges[][2] = {
        {'A', 'C'}, 
        {'A', 'D'}, 
        {'A', 'F'}, 
        {'B', 'C'}, 
        {'C', 'D'}, 
        {'E', 'G'}, 
        {'F', 'G'}}; 
    int vlen = LENGTH(vexs);
    int elen = LENGTH(edges);
    int i, p1, p2;
    Graph* pG;

    // 輸入"頂點數"和"邊數"
    if ((pG=(Graph*)malloc(sizeof(Graph))) == NULL )
        return NULL;
    memset(pG, 0, sizeof(Graph));

    // 初始化"頂點數"和"邊數"
    pG->vexnum = vlen;
    pG->edgnum = elen;
    // 初始化"頂點"
    for (i = 0; i < pG->vexnum; i++)
    {
        pG->vexs[i] = vexs[i];
    }

    // 初始化"邊"
    for (i = 0; i < pG->edgnum; i++)
    {
        // 讀取邊的起始頂點和結束頂點
        p1 = get_position(*pG, edges[i][0]);
        p2 = get_position(*pG, edges[i][1]);

        pG->matrix[p1][p2] = 1;
        pG->matrix[p2][p1] = 1;
    }

    return pG;
}