【发布时间】:2023-03-24 16:11:01
【问题描述】:
作为新手,我正在尝试使用 C(或 C++)生成 DAG。
struct Node
{
Link *incomingEdge, *outgoingEdge;
};
struct Link
{
Node *origin, *destination;
};
在我的代码中,每个节点只有一个传入和传出边。但是,一个节点可能有多个入射边。此外,每个节点的事件边数可能会发生变化。
如何为每个节点生成不同数量的指针?
假设我有;
nodeA 有 5 个输入边和 4 个输出边。 nodeB 有 3 个输入边和 6 个输出边。
所以每个节点的指针数量都在变化。
【问题讨论】:
-
'如何为每个节点生成不同数量的指针?' generate 是什么意思?您是在问,如何为事件边保存多个指针?然后你可以使用
std::vector<Link*> incidentEdges;之类的东西。 -
您可能需要考虑使用adjacency list。另外:如果您打算使用一种结构而不是另一种结构,那么可能程序员.se 可能是一个更好的选择。
-
好吧,我想经常删除节点和边并添加新的..这就是我不想考虑邻接表的原因。
-
一个矢量容器会很好,但是如果我想经常通过矢量搜索,这是一种有效的方法吗?
标签: c++ c algorithm graph graph-theory