我应该创建一个算法来检索图ADT的边(弧)列表。
我无法访问图形私有成员。我以为我可以做一些类似于DFS或BFS访问标记节点的东西,如果边缘存在,将它添加到列表中,该列表应该是算法的输出,但我找不到解决方案。
我有这样的方法:
bool IsEmpty()
Node InsertNode()
InsertArc(Node, Node)
DeleteNode(Node)
DeleteArc(Node, Node)
List AdjNodes(Node)
bool ExistsNode(Node)
bool ExistsArc(Node, Node)
Label ReadNode(Node)
WriteNode(Node, Label)
我可以使用什么算法?
答案 0 :(得分:1)
那么,通过这些方法,您可以在图的每个节点上调用AdjNodes(Node)。对于返回列表中的每个节点,这将表示一个边,可以用一对(FirstNode,SecondNode)表示。将这些对存储在新创建的列表中,这是您的边缘列表。
如果你有一个无向图,你将找到你找到的每个边的副本,因为(FirstNode,SecondNode)和(SecondNode,FirstNode)代表相同的边。