2016-11-15 5 views
0

私はどのようにグラフのノードを保存するかを解決しようとしています。すべてのノードは、より多くの祖先とより多くの子孫を持つことができます。グラフの節を保存する最良の方法

struct Node 
{ 
    int m_Value; 
    int m_Index; // end Node in m_Nodes 
    int m_Length; // actual size of m_Nodes and m_Prev (for realloc) 
    Node* m_Nodes; // dynamic array (descendants) 
    Node* m_Prev; // dynamic array (ancestors) 
} 

私はこれが最善の方法であるのかはわからない。今私は、この構造体を持っています。グラフは次のようになります。

1 
2 3 
    4 

Edges: [1,2], [1,3], [2,4], [3,4], [4,1] 

ありがとうございます。

+1

* int m_Length; //実際のm_Nodesとm_Prevのサイズ(reallocの場合)* - 独自のサイズを知っている 'std :: vector'のようなコンテナクラスを使用した場合、これは必要ありません。 – PaulMcKenzie

+0

あなたのグラフはDirected Acyclic Graphまたは一般的なグラフですか?メモリリークを回避するには、ノードを別のデータ構造体に記録する必要があります。 – Franck

+0

@PaulMcKenzieはい、わかっています。私はそれなしで実装することを望みます。私が間違って私はそれに気付かなかった。 – Levin

答えて

0

あなたはエッジとポイントを別々に保存することができます。そして、一点のすべてのエッジを取得する関数が必要です。メモリmalloc &無料操作私は少ない

関連する問題