我正在使用連續方法開展與電路測試相關的小型科學課程項目。該程序將解析電路定義文件,然後構建一個易於修改的圖形結構來表示電路。然後對該圖進行某些修改,並對其進行拓撲排序。排序後,圖形轉換爲一個由數組列表構成的靜態結構,每個數組對應一定的拓撲排序程度。之後,可以很容易地模擬電路,因爲您可以依賴排序順序並按順序處理模型。創建自定義圖形數據結構是否違反任何原則?
現在是所有好的和邏輯,但我所提到的兩個圖是自定義的數據結構,其中:
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