Я не на 100%, я полностью понял вопрос, но если бы я понял, вот алгоритм c, который довольно прост в обращении:
Intro:
То, что вы, по сути, хотите сделать, это построить список предметов в соответствии с некоторой логикой c (cur_item.first == prev_item.second
) и затем показать этот список в порядке убывания / возрастания.
Псевдокод:
data = {}
for item in items:
data[item.first] = item
list = []
// add the initial item to the list.
cur_item = list[0]
while condition:
next_item = data[cur_item.second]
list.append(next_item)
cur_item = next_item
Надеюсь, это поможет