鄰接矩陣無向圖(一)之 C語言詳解
阿新 • • 發佈:2018-12-31
/* * 建立圖(用已提供的矩陣) */ 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; }