![](/img/trans.png)
[英]Converting an Adjacency List to a an Adjacency Matrix for a Directed Acyclic Graph in C++
[英]C/C++ implementation of a Directed Acyclic Graph
作为新手,我正在尝试使用C(或C ++)生成DAG。
struct Node
{
Link *incomingEdge, *outgoingEdge;
};
struct Link
{
Node *origin, *destination;
};
仅在我的代码中,每个节点只有一个传入和传出边缘。 但是,一个节点可能具有多个入射边缘。 此外,每个节点的入射边缘数可能会发生变化。
如何为每个节点生成不同数量的指针?
假设我有;
具有5个传入边缘和4个传出边缘的nodeA。 具有3个传入边缘和6个传出边缘的nodeB。
因此每个节点的指针数量都在变化。
考虑使用指针向量
std::vector<Link *> incomingEdge;
这取决于您的需求。 该图完全由边缘描述,因此简单的答案是,从节点定义中省略*incomingEdge, *outgoingEdge
。 但是相邻节点的std::
的链表或适当的容器对于您要实现的算法可能会更好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.