2016-03-22 14 views
1

私はオブジェクトの配列を持っています。これらのオブジェクトには、相互参照を持つことができる関数とプロシージャが含まれています。これらの関数が正しい順序で宣言されているシーケンスが必要です。依存関係の配列をソートする方法は?

例:

someFunc1 uses someFunc2; 
    someFunc2 uses someFunc3; 

正しい宣言順序:いくつかのケースで

someFunc3(){ ... } 
someFunc2(){ ... } 
someFunc1(){ ... } 

つの機能/手順は、複数の機能/手順への参照を有します。

アレイは次のようになります

[ {string: func_proc, array[int]: calledIn}, {}, {}, ... ] 
  • func_proc:関数/手順のコードと
  • calledIn:配列内の関数/プロシージャの位置は、この関数/プロシージャが参照
  • を持って

例:私はDelphiで働いている

[{"function someFunc1()...", []}, {"function someFunc2()...", [0]}, {"function someFunc3()...", [1]}] 

答えて

2

あなたが探しているアルゴリズムは、topological sortingとして知られています。

+0

ありがとうございました!私はここでより多くの助けを見つけた:https://rosettacode.org/wiki/Topological_sort – Attila

関連する問題