我需要用C++写一个图,我有一个小问题。我的图应该是有向的或无向的,加权的或无权的,基于矩阵或列表所有用户的选择区别矩阵和列表图并不是什么大问题,因为它是两个不同的类,所以我对其他参数有一些问题。最明显的区分方法是创建两个bool变量,并在每次添加和删除顶点时检查它们这是非常明显和容易理解,但我怀疑它的效率,因为每次我添加或删除顶点,我必须做额外的if。我也可以为它编写子类,但我严重怀疑它是否值得。
如果不是表示图形本身,那么每个库都可以使用。

最佳答案

对于有向和无向,最好的情况是对图使用bool变量,但是您可以假设图是加权和有向的,但是对于无向边,从a→b添加一条边,从b→a添加一条边。另外,如果没有weight函数,请将其weight设置为1
但是,如果您要查找图形库,这取决于您的编程语言,但我建议graph boost library完全用c++实现,并且有太多其他人用其他语言部分实现它。

关于c++ - 区分有向图和无向图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10382586/

10-10 12:48