2016-03-22 35 views
1

Nesnelerim var. Bu nesneler, birbirlerine referans olabilecek işlevler ve prosedürler içerir. Bu işlevlerin doğru sırayla bildirildiği bir diziye ihtiyacım var.Bağımlılıklar dizisi nasıl sıralanır?

Örnek:

someFunc1 uses someFunc2; 
    someFunc2 uses someFunc3; 

doğru beyan düzeni: bir fonksiyonu/prosedür birden fazla işlev/prosedürlere referanslar vardır Bazı durumlarda

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

.

dizisi aşağıdaki gibidir:

[ {string: func_proc, array[int]: calledIn}, {}, {}, ... ] 
  • func_proc: işlev/prosedürün kodu;
  • calledIn: dizi fonksiyonu/prosedür pozisyonları, bu fonksiyon/prosedür referanslar
  • sahiptir

Örnek: Delphi çalışıyorum

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

.

cevap

2

Aradığınız algoritma topological sorting olarak bilinir.

+0

Fikir için teşekkür ederiz! Daha fazla yardım buldum: https://rosettacode.org/wiki/Topological_sort – Attila