Tôi có một bộ sưu tập:đối tượng Làm thế nào để sắp xếp phụ thuộc bởi sự phụ thuộc
List<VPair<Item, List<Item>> dependencyHierarchy;
Mục đầu tiên trong cặp là một số đối tượng (item) và thứ hai là một bộ sưu tập cùng loại đối tượng mà người đầu tiên phụ thuộc trên. Tôi muốn nhận được một List<Item>
theo thứ tự phụ thuộc, do đó, không có mục nào phụ thuộc vào yếu tố đầu tiên và vân vân (không phụ thuộc vào chu kỳ!).
Input:
Item4 depends on Item3 and Item5 Item3 depends on Item1 Item1 does not depend on any one Item2 depends on Item4 Item5 does not depend on any one
Kết quả:
Item1 Item5 Item3 Item4 Item2
Cảm ơn bạn.
SOLUTION:
tôpô Sorting (nhờ Loïc Février cho ý tưởng)
và
example on C#, example on Java (nhờ xcud cho ví dụ tuyệt vời)
Tìm thấy một C# impl của tsort: http://tawani.blogspot.com/2009/02/topological-sorting-and-cyclic.html – xcud