C++實現(xiàn)有向圖鄰接表的構(gòu)建
本文實例為大家分享了C++實現(xiàn)有向圖鄰接表的構(gòu)建代碼,供大家參考,具體內(nèi)容如下
數(shù)據(jù)結(jié)構(gòu)里面的一道基礎(chǔ)題,分享下自己的寫法,驗證可跑。
#include<iostream> #include<string> const int MAX = 20; using namespace std; struct ArcNode { //弧結(jié)點 int adjvex = -1; //所指頂點位置 ArcNode *nextarc = nullptr; //下一條狐指針 size_t info = 0; //弧信息 }; struct VNode { //頂點 string data = "0"; ArcNode *firstarc = nullptr; //第一條依附該頂點的弧的指針 }; struct Graph { //圖結(jié)構(gòu) VNode vertices[MAX]; //全部頂點 int vexnum, arcnum; //頂點數(shù)和弧數(shù) Graph(int m, int n) :vexnum(m), arcnum(n) {}; Graph() :vexnum(0), arcnum(0) {}; }; int main() { int vnum, anum, tempanum = 0; cout << "輸入頂點數(shù):"; cin >> vnum; cout << "輸入弧數(shù):"; cin >> anum; cout << "\n\n"; Graph G(vnum, anum); for (int i = 0; i != vnum; ++i) { cout << "輸入結(jié)點" << i << "的信息:"; cin >> G.vertices[i].data; if (tempanum != anum) cout << "輸入依靠此結(jié)點的弧的信息(輸入-1以停止):\n"; else cout << "已輸入所有弧的信息!\n"; bool first = true; ArcNode *p, *temp; for (int j = 0; (j != anum) && (tempanum != vnum); ++j) { int pointto; cout << "輸入弧" << tempanum << "所指向的頂點位置:"; cin >> pointto; if (pointto == -1) break; else { ++tempanum; if (first == true) { first = false; G.vertices[i].firstarc = new ArcNode; G.vertices[i].firstarc->adjvex = pointto; p = G.vertices[i].firstarc; } else { temp = new ArcNode; temp->adjvex = pointto; p->nextarc = temp; p = temp; } } } cout << endl; } for (int i = 0; i != anum; ++i) { cout << "頂點" << i << ": |" << G.vertices[i].data << "|"; if (G.vertices[i].firstarc) { cout << " -> " << G.vertices[i].firstarc->adjvex; auto pt = G.vertices[i].firstarc->nextarc; while (pt) { cout << " -> " << pt->adjvex; pt = pt->nextarc; } cout << "-> ^"; } else cout << " -> ^"; cout << endl; } return 0; }
由于只是單純構(gòu)建基本的無權(quán)值有向圖鄰接表,里面的弧結(jié)構(gòu)中弧信息未利用到。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C++中cin.getline()和getline()函數(shù)的區(qū)別小結(jié)
這篇文章主要介紹了C++中cin.getline()和getline()函數(shù)區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03一文帶你學(xué)習(xí)一下C++中的構(gòu)造函數(shù)
構(gòu)造函數(shù)是一種特殊的函數(shù),它用于在創(chuàng)建對象時初始化對象的值。在本文中,我們將學(xué)習(xí)C++的構(gòu)造函數(shù)以及如何使用它們來創(chuàng)建對象,希望對大家有所幫助2023-05-05使用Objective-C獲取IPHONE手機IMSI序列號
這篇文章主要介紹了使用Objective-C獲取IPHONE手機IMSI序列號的方法以及通過IMSI序列號獲取運營商、手機號的方法,非常的實用,有需要的小伙伴可以參考下。2015-04-04C 語言基礎(chǔ)實現(xiàn)青蛙跳臺階和漢諾塔問題
這篇文章我們九里講講C 語言基礎(chǔ)實現(xiàn)青蛙跳臺階和漢諾塔問題,感興趣的小伙伴可以參考下面文章的具體內(nèi)容2021-09-09