有向无环图的C / C ++实现

时间:2014-07-24 14:31:36

标签: c++ c algorithm graph graph-theory

作为新手,我试图使用C(或C ++)生成DAG。

struct Node
{
    Link *incomingEdge, *outgoingEdge;
};

struct Link
{

    Node *origin, *destination;

};

在我的代码中,每个节点只有一个传入和传出边。但是,节点可能有多个入射边缘。此外,每个节点的入射边数可能会发生变化。

如何为每个节点生成不同数量的指针?

假设我有;

nodeA,有5个传入边和4个传出边。 nodeB有3个传入边和6个传出边。

因此每个节点的指针数量都在变化。

2 个答案:

答案 0 :(得分:1)

考虑使用指针向量

std::vector<Link *> incomingEdge;

答案 1 :(得分:0)

这取决于你的需要。图形完全由边缘描述,因此简单的答案是,从节点定义中省略*incomingEdge, *outgoingEdge。 但是,来自std::个adjecent节点的链表或适当的容器对于您要实现的算法可能会更好。