我需要在C++中实现一个有向图(有向图),作为家庭作业的一部分,而我在如何表示顶点和边数据类型方面遇到一些问题。
谁能给我指出一个示例或一个简单的c++类来实现此目的,以便我可以研究它并从那里扩展?
我已经搜索了一下,但是我只找到了使用Boost或其他库的结果,我只需要一些不依赖任何库的简单东西。
谢谢你。
最佳答案
用数据结构表示有向图的主要方法有两种:
以节点为中心的。此方法将每个节点表示为程序中的对象,并且每个节点都包含有关其链接到的其他节点的信息。其他节点可以像在当前节点和目标节点之间存在有向边的节点列表一样简单。
边缘中心。此方法将每个边缘表示为程序中的对象,并且每个边缘包含有关其连接的节点的信息。在有向图中,每个边将只有一个“源”和“目标”节点(如果考虑自循环,则可能是同一节点)。此方法实质上是有序对的列表。
根据您要解决的问题,这两种基本形式之一最终将是最合适的。更具体的算法可能需要向上述基本结构添加更多信息,例如从当前节点可到达的所有节点的列表。