当前位置:首页 > 通信资讯 > 正文

c++邻接表构建无向图(c语言图的邻接表)

本文实例为大家分享了C++实现有向图邻接表的构建代码,供大家参考,具体内容如下

数据结构里面的一道基础题,分享下自己的写法,验证可跑。

c++邻接表构建无向图(c语言图的邻接表)

  1. #include<iostream>
  2. #include<string>
  3. const int MAX = 20;
  4. using namespace std;
  5. struct ArcNode { //弧结点
  6. int adjvex = -1; //所指顶点位置
  7. ArcNode *nextarc = nullptr; //下一条狐指针
  8. size_t info = 0; //弧信息
  9. };
  10. struct VNode { //顶点
  11. string data = "0";
  12. ArcNode *firstarc = nullptr; //第一条依附该顶点的弧的指针
  13. };
  14. struct Graph { //图结构
  15. VNode vertices[MAX]; //全部顶点
  16. int vexnum, arcnum; //顶点数和弧数
  17. Graph(int m, int n) :vexnum(m), arcnum(n) {};
  18. Graph() :vexnum(0), arcnum(0) {};
  19. };
  20. int main()
  21. {
  22. int vnum, anum, tempanum = 0;
  23. cout << "输入顶点数:";
  24. cin >> vnum;
  25. cout << "输入弧数:";
  26. cin >> anum;
  27. cout << "\n\n";
  28. Graph G(vnum, anum);
  29. for (int i = 0; i != vnum; ++i) {
  30. cout << "输入结点" << i << "的信息:";
  31. cin >> G.vertices[i].data;
  32. if (tempanum != anum)
  33. cout << "输入依靠此结点的弧的信息(输入-1以停止):\n";
  34. else
  35. cout << "已输入所有弧的信息!\n";
  36. bool first = true;
  37. ArcNode *p, *temp;
  38. for (int j = 0; (j != anum) && (tempanum != vnum); ++j) {
  39. int pointto;
  40. cout << "输入弧" << tempanum << "所指向的顶点位置:";
  41. cin >> pointto;
  42. if (pointto == -1) break;
  43. else {
  44. ++tempanum;
  45. if (first == true) {
  46. first = false;
  47. G.vertices[i].firstarc = new ArcNode;
  48. G.vertices[i].firstarc->adjvex = pointto;
  49. p = G.vertices[i].firstarc;
  50. }
  51. else {
  52. temp = new ArcNode;
  53. temp->adjvex = pointto;
  54. p->nextarc = temp;
  55. p = temp;
  56. }
  57. }
  58. }
  59. cout << endl;
  60. }
  61. for (int i = 0; i != anum; ++i) {
  62. cout << "顶点" << i << ": |" << G.vertices[i].data << "|";
  63. if (G.vertices[i].firstarc) {
  64. cout << " -> " << G.vertices[i].firstarc->adjvex;
  65. auto pt = G.vertices[i].firstarc->nextarc;
  66. while (pt) {
  67. cout << " -> " << pt->adjvex;
  68. pt = pt->nextarc;
  69. }
  70. cout << "-> ^";
  71. }
  72. else
  73. cout << " -> ^";
  74. cout << endl;
  75. }
  76. return 0;
  77. }

c++邻接表构建无向图(c语言图的邻接表)

由于只是单纯构建基本的无权值有向图邻接表,里面的弧结构中弧信息未利用到。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

原文链接:https://blog.csdn.net/qq_40033627/article/details/80825023

如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

为您推荐:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。