鄰接表有向圖(二)之 C++詳解
阿新 • • 發佈:2018-12-30
/* * 建立鄰接表對應的圖(自己輸入) */ ListDG::ListDG() { char c1, c2; int v, e; int i, p1, p2; ENode *node1, *node2; // 輸入"頂點數"和"邊數" cout << "input vertex number: "; cin >> mVexNum; cout << "input edge number: "; cin >> mEdgNum; if ( mVexNum < 1 || mEdgNum < 1 || (mEdgNum > (mVexNum * (mVexNum-1)))) { cout << "input error: invalid parameters!" << endl; return ; } // 初始化"鄰接表"的頂點 for(i=0; i<mVexNum; i++) { cout << "vertex(" << i << "): "; mVexs[i].data = readChar(); mVexs[i].firstEdge = NULL; } // 初始化"鄰接表"的邊 for(i=0; i<mEdgNum; i++) { // 讀取邊的起始頂點和結束頂點 cout << "edge(" << i << "): "; c1 = readChar(); c2 = readChar(); p1 = getPosition(c1); p2 = getPosition(c2); // 初始化node1 node1 = new ENode(); node1->ivex = p2; // 將node1連結到"p1所在連結串列的末尾" if(mVexs[p1].firstEdge == NULL) mVexs[p1].firstEdge = node1; else linkLast(mVexs[p1].firstEdge, node1); } }