c++ - 有向图实现

标签 c++ graph

作为家庭作业的一部分,我需要在 C++ 中实现有向图(有向图),但我在如何表示顶点和边数据类型方面遇到了一些问题。
任何人都可以指出一个示例或一个实现此功能的简单 C++ 类,以便我可以研究它并从那里扩展吗?

我用谷歌搜索了一下,但只找到了有关使用 Boost 或其他库的结果,我只需要一些不依赖任何库的简单的东西。

谢谢。

最佳答案

用数据结构表示有向图主要有两种方式:

以节点为中心。此方法将每个节点 表示为您程序中的一个对象,并且每个节点都包含有关它链接到的其他节点的信息。其他节点可以像节点列表一样简单,其中当前节点和目标节点之间存在有向边。

以边缘为中心。此方法将每条 表示为程序中的一个对象,并且每条边都包含有关它所连接的节点的信息。在有向图中,每条边都只有一个“源”和“目标”节点(如果您正在考虑自循环,它们可能是相同的节点)。此方法本质上是一个有序对列表。

根据您要解决的问题,这两种基本形式中的一种最终会是最合适的。更具体的算法可能需要向上述基本结构添加更多信息,例如从当前节点可达的所有节点的列表。

关于c++ - 有向图实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2156920/

相关文章:

algorithm - 具有动态边成本的最短路径(算法)

ios - 错误 - 无法使用类型为 'LineChartData' 的参数列表调用类型为 '(xVals: [String], dataSet: LineChartDataSet)' 的初始值设定项

python - Networkx如何获取多向图中特定边的长度

c++ - 在不使用第三个数组的情况下交换两个变量的值

c++ - 为什么 CLang++ 不优化循环而 G++ 可以?

c++ - 与 Worklight 静态库的符号冲突

algorithm - 通过图形网络成功传输数据向量的概率

C++ 随机数逻辑运算符奇怪的结果

c++ - std::lower_bound() 实现

graph - 具有唯一拓扑排序的图的先决条件