2016-03-22 4 views
1

Ich habe eine Reihe von Objekten. Diese Objekte enthalten Funktionen und Prozeduren, die sich aufeinander beziehen können. Ich brauche eine Sequenz, in der diese Funktionen in der richtigen Reihenfolge deklariert werden.Wie sortiere ich Array von Abhängigkeiten?

Beispiel:

someFunc1 uses someFunc2; 
    someFunc2 uses someFunc3; 

die richtige Erklärung Reihenfolge:

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

In einigen Fällen eine Funktion/Prozedur Verweise auf mehrere Funktionen/Prozeduren hat.

Die Anordnung sieht wie folgt aus:

[ {string: func_proc, array[int]: calledIn}, {}, {}, ... ] 
  • func_proc: der Code der Funktion/Prozedur;
  • calledIn: die Funktion/Prozedur Positionen in dem Array, in dem diese Funktion/procedure Referenzen

Beispiel hat:

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

Ich arbeite in Delphi.

Antwort

2

Der Algorithmus, den Sie suchen, ist bekannt als topological sorting.

+0

Vielen Dank für die Idee! Ich habe hier mehr Hilfe gefunden: https://rosettacode.org/wiki/Topological_sort – Attila