我正在使用连续方法开展与电路测试相关的小型科学课程项目。该程序将解析电路定义文件,然后构建一个易于修改的图形结构来表示电路。然后对该图进行某些修改,并对其进行拓扑排序。排序后,图形转换为一个由数组列表构成的静态结构,每个数组对应一定的拓扑排序程度。之后,可以很容易地模拟电路,因为您可以依赖排序顺序并按顺序处理模型。创建自定义图形数据结构是否违反任何原则?
现在是所有好的和逻辑,但我所提到的两个图是自定义的数据结构,其中:
1)不建挺到STL规范(是漫长和艰难的,我反正 - 图比向量和列表复杂得多)
2)对于第二个图,我假设它是不可修改的,并使用矢量向量或向量列表来获得速度。
3)我的图表可用的一组操作是有限的,反映了我的项目需求。
4)代码很简单。
现在我只是一个三年级学生的IT和软件设计和阅读一些现实生活中的代码后,成就了一个疗程后,我在想:
1)能够(或者甚至可能)的代码如此简单?
2)不要因为假设数据结构而违反软件设计的数以千计的原则吗?
3)我应该真的总是符合我在这个和未来的项目中创建的所有数据结构的STL规范吗?
该项目使用C++。
感谢您的关注!我希望对这些问题有一个基本的和理论上的答案,以及这个问题的实际解决方案的例子。
请不要给这个作业标签。恭敬谢谢。 – iksemyonov 2011-05-03 14:10:41
你如何表示第一个图?邻接列表或类似结构可以用标准容器构建。你还看看boost :: graph数据结构吗? – 2011-05-03 14:13:15
IIRC它就像顶点列表和边缘列表,边缘知道它们连接的顶点。所以你可以快速插入/删除数据。是的,我了解Boost,但由于这是一个大学项目,我的目标是证明我可以编写代码,而不是使用已有的解决方案。如果我选择使用Boost :: Graph和其他库,那么我的代码会很少。 – iksemyonov 2011-05-03 14:44:42