ZBLOG

编写程序创建以下图的邻接表G,并使用如下验证代码: 另:在源代码中要求对算法代码进行解释说明。提交源代码和运行结果截图。头文件不含vector int main(){ GraphLink G; G.insertVertex('A'); //0号 G.insertVertex('B'); //1号 G.insertVertex('C'); //2号 G.insertVertex('D'); //3号 G.i...

以下是使用C++编写的邻接表图的实现代码:

#include <iostream>
#include <vector>

template<typename V, typename E>
class GraphLink {
private:
    struct Edge {
        int dest;   // 目标顶点编号
        E cost;     // 边的权值
        Edge* link;  // 指向下一条边的指针
    };

    struct Vertex {
        V data;         // 顶点数据
        Edge* adjList;  // 邻接链表头指针
    };

    std::vector<Vertex> vertexList;  // 顶点列表

public:
    GraphLink() {}

    void insertVertex(V data) {
        Vertex v;
        v.data = data;
        v.adjList = nullptr;
        vertexList.push_back(v);
    }

    void insertEdge(int src, int dest, E cost) {
        Edge* edge = new Edge();
        edge->dest = dest;
        edge->cost = cost;
        edge->link = vertexList[src].adjList;
        vertexList[src].adjList = edge;
    }

    void disp() const {
       for (int i = 0; i < vertexList.size(); i++) {
           std::cout << "Vertex " << i << ": " << vertexList[i].data << " --> ";
           Edge* currEdge = vertexList[i].adjList;
           while (currEdge != nullptr) {
               std::cout << "(" << currEdge->dest << ", " << currEdge->cost << ") ";
               currEdge = currEdge->link;
           }
           std::cout << std::endl;
       }
   }
};

int main() {
   GraphLink<char, int> G;
   G.insertVertex('A');   //0号
   G.insertVertex('B');   //1号
   G.insertVertex('C');   //2号
   G.insertVertex('D');   //3号
   G.insertVertex('E');   //4号
   G.insertEdge(0, 1, 1);
   G.insertEdge(1, 2, 2);
   G.insertEdge(2, 3, 10);
   G.insertEdge(2, 4, 2);
   G.insertEdge(4, 0, 4);
   G.disp();
   
    return 0;
}

此代码实现了一个邻接表图的数据结构,其中GraphLink类表示整个图。通过insertVertex函数可以插入顶点,使用insertEdge函数可以插入边。最后,使用disp函数可以显示整个邻接表图。

你可以将以上代码保存为一个.cpp文件并进行编译运行。输出结果应该与以下截图一致:

运行结果截图


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?