我正在创建一个用于实现图形算法的 C++ 库。我正在考虑“Graph”类的适当表示。
有两种主要类型的图(定向/非定向)和表示(列表/矩阵)。
我对算法没有问题……但我想提出一个合适且健壮的数据结构(如果需要,包括类的继承序列)。
目前我没有使用任何特殊的数据结构来表示图,静态方法有作为输入参数的关联、邻接...矩阵。
此类应保留图形的两种表示形式还是仅保留一种表示形式,并在两种表示形式之间具有转换函数?哪个可能是首选?
许多人使用不同的方法解决了这个问题。
在重新发明轮子之前,您可以先看看boost::graph。不要忘记捆绑属性。
你这样做是为了上课还是作为学习练习?因为如果不是,正如你所指出的,这个问题已经解决了很多次。当人们浏览各种解决方案时,就会意识到存在一些问题,即使是这样的:
等等...
尝试查看一些最流行的实现:
https://stackoverflow.com/questions/2751826/which-c-graph-library-should-i-use