作为新手,我试图使用C(或C ++)生成DAG。
struct Node
{
Link *incomingEdge, *outgoingEdge;
};
struct Link
{
Node *origin, *destination;
};
在我的代码中,每个节点只有一个传入和传出边。但是,节点可能有多个入射边缘。此外,每个节点的入射边数可能会发生变化。
如何为每个节点生成不同数量的指针?
假设我有;nodeA,有5个传入边和4个传出边。 nodeB有3个传入边和6个传出边。
因此每个节点的指针数量都在变化。
答案 0 :(得分:1)
考虑使用指针向量
std::vector<Link *> incomingEdge;
答案 1 :(得分:0)
这取决于你的需要。图形完全由边缘描述,因此简单的答案是,从节点定义中省略*incomingEdge, *outgoingEdge
。
但是,来自std::
个adjecent节点的链表或适当的容器对于您要实现的算法可能会更好。