У меня есть коллекция:
List<VPair<Item, List<Item>> dependencyHierarchy;
Первым элементом в паре является некоторый объект (элемент), а второй - это коллекция объектов того же типа, от которых зависит первый. Я хочу получить List<Item>
в порядке зависимости, поэтому нет элементов, которые зависят от первого элемента и т.д. (Без циклической зависимости!).
Вход:
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
Результат:
Item1 Item5 Item3 Item4 Item2
Спасибо.
РЕШЕНИЕ:
Топологическая сортировка (спасибо Loïc Février за идею)
и
пример на С#, пример в Java (спасибо xcud для отличных примеров)