时间:2021-05-20
本文实例为大家分享了C++实现有向图邻接表的构建代码,供大家参考,具体内容如下
数据结构里面的一道基础题,分享下自己的写法,验证可跑。
#include<iostream>#include<string>const int MAX = 20;using namespace std; struct ArcNode { //弧结点 int adjvex = -1; //所指顶点位置 ArcNode *nextarc = nullptr; //下一条狐指针 size_t info = 0; //弧信息}; struct VNode { //顶点 string data = "0"; ArcNode *firstarc = nullptr; //第一条依附该顶点的弧的指针}; struct Graph { //图结构 VNode vertices[MAX]; //全部顶点 int vexnum, arcnum; //顶点数和弧数 Graph(int m, int n) :vexnum(m), arcnum(n) {}; Graph() :vexnum(0), arcnum(0) {};}; int main(){ int vnum, anum, tempanum = 0; cout << "输入顶点数:"; cin >> vnum; cout << "输入弧数:"; cin >> anum; cout << "\n\n"; Graph G(vnum, anum); for (int i = 0; i != vnum; ++i) { cout << "输入结点" << i << "的信息:"; cin >> G.vertices[i].data; if (tempanum != anum) cout << "输入依靠此结点的弧的信息(输入-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;}由于只是单纯构建基本的无权值有向图邻接表,里面的弧结构中弧信息未利用到。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
邻接表无向图的介绍邻接表无向图是指通过邻接表表示的无向图。上面的图G1包含了”A,B,C,D,E,F,G”共7个顶点,而且包含了”(A,C),(A,D),(A,
本文实例为大家分享了C++数据结构之实现邻接表的具体代码,供大家参考,具体内容如下一、图的邻接表实现1.实现了以顶点顺序表、边链表为存储结构的邻接表;2.实现了
本文实例讲述了C++实现图的邻接表存储和广度优先遍历方法。分享给大家供大家参考。具体如下:示例:建立如图所示的无向图由上图知,该图有5个顶点,分别为a,b,c,
C语言数据结构之图的遍历实例详解输入一组顶点,建立无向图的邻接矩阵。输入一组顶点,建立有向图的邻接表。分别对无向图和有向图进行DFS(深度优先遍历)和BFS(广
本文实例为大家分享了C++实现邻接表顶点的删除代码,供大家参考,具体内容如下这里的边是无向边删除顶点v时,要找到顶点v的邻接顶点w,把w中指向v的边删除掉,再删