ZBLOG

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

以下是使用C++编写的创建邻接表并验证的代码:

#include <iostream>
#include <vector>

template<typename T, typename E>
struct EdgeNode {
    int adjvex;
    E weight;
    EdgeNode<T, E> *next;
};

template<typename T, typename E>
struct VertexNode {
    T data;
    EdgeNode<T, E> *firstEdge;
};

template<typename T, typename E>
class GraphLink {
private:
    std::vector<VertexNode<T, E>> vertexList; // 顶点数组

public:
    void insertVertex(T data) {
        VertexNode<T, E> vNode;
        vNode.data = data;
        vNode.firstEdge = nullptr;

        vertexList.push_back(vNode);
    }

    void insertEdge(int startVex, int endVex, E weight) {
        EdgeNode<T, E> *newEdge1 = new EdgeNode<T, E>;
        newEdge1->adjvex = endVex;
        newEdge1->weight = weight;

        if (vertexList[startVex].firstEdge == nullptr) {
            vertexList[startVex].firstEdge = newEdge1;
            newEdge1->next = nullptr;
        } else {
            newEdge1->next = vertexList[startVex].firstEdge;
            vertexList[startVex].firstEdge = newEdge1;
        }
    }

    void disp() const {
        for (int i = 0; i < vertexList.size(); i++) {
            std::cout << "顶点" << i << "(" << vertexList[i].data << "): ";
            EdgeNode<T, E> *current = vertexList[i].firstEdge;
            while (current != nullptr) {
                std::cout << "-> [" << current->adjvex << "](" << current->weight << ")";
                current = current->next;
            }
            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;
}

这段代码实现了一个使用邻接表表示的图数据结构,并创建了一个包含5个顶点和5条边的图。insertVertex函数用于插入顶点,insertEdge函数用于插入边,disp函数用于打印图的邻接表表示。

运行结果截图请参考:点击此处查看


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?