ZBLOG

#include #include template struct EdgeNode { int adjvex; E weight; EdgeNode *next; }; template struct VertexNode { T data; EdgeNode *firstEdge; }...

以下是使用了 <iostream> 头文件的完整代码:

  1. #include <iostream>
  2. #include <vector>
  3. template<typename T, typename E>
  4. struct EdgeNode {
  5. int adjvex;
  6. E weight;
  7. EdgeNode<T, E> *next;
  8. };
  9. template<typename T, typename E>
  10. struct VertexNode {
  11. T data;
  12. EdgeNode<T, E> *firstEdge;
  13. };
  14. template<typename T, typename E>
  15. class GraphLink {
  16. private:
  17. std::vector<VertexNode<T, E>> vertexList; // 顶点数组
  18. public:
  19. void insertVertex(T data) {
  20. VertexNode<T, E> vNode;
  21. vNode.data = data;
  22. vNode.firstEdge = nullptr;
  23. vertexList.push_back(vNode);
  24. }
  25. void insertEdge(int startVex, int endVex, E weight) {
  26. EdgeNode<T, E> *newEdge1 = new EdgeNode<T, E>;
  27. newEdge1->adjvex = endVex;
  28. newEdge1->weight = weight;
  29. if (vertexList[startVex].firstEdge == nullptr) {
  30. vertexList[startVex].firstEdge = newEdge1;
  31. newEdge1->next = nullptr;
  32. } else {
  33. newEdge1->next = vertexList[startVex].firstEdge;
  34. vertexList[startVex].firstEdge = newEdge1;
  35. }
  36. }
  37. void disp() const {
  38. for (int i = 0; i < vertexList.size(); i++) {
  39. std::cout << "顶点" << i << "(" << vertexList[i].data << "): ";
  40. EdgeNode<T, E> *current = vertexList[i].firstEdge;
  41. while (current != nullptr) {
  42. std::cout << "-> [" << current->adjvex << "](" << current->weight << ")";
  43. current = current->next;
  44. }
  45. std::cout << std::endl;
  46. }
  47. }
  48. };
  49. int main() {
  50. GraphLink<char, int> G;
  51. G.insertVertex('A'); //0号
  52. G.insertVertex('B'); //1号
  53. G.insertVertex('C'); //2号
  54. G.insertVertex('D'); //3号
  55. G.insertVertex('E'); //4号
  56. G.insertEdge(0, 1, 1);
  57. G.insertEdge(1, 2, 2);
  58. G.insertEdge(2, 3, 10);
  59. G.insertEdge(2, 4, 2);
  60. G.insertEdge(4, 0, 4);
  61. G.disp();
  62. return 0;
  63. }

这个程序实现了一个基于邻接表的有向图数据结构,并提供了插入顶点和边以及展示图的功能。在主函数中,创建了一个包含5个顶点(A、B、C、D、E)的有向图,并插入了一些边,最后调用 disp() 方法展示图的信息。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=10356

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?