EDIT: Терминология, которую я искал, называется Cycle Detection. Благодаря @dhke для ссылки на это в комментариях.Ссылка Ссылка Список Длина Python?
Я пытаюсь найти лучший способ обработать список индексов и то, что это длина, если список имеет цикл в своей ссылке. У меня есть функция, которая работает, но она передает следующее значение индекса и счетчик. Я пытался найти способ сделать это, просто передав список в функцию. Он всегда начинается с индекса 0.
Учитывая список, каждый узел в списке ссылается на индекс другого узла. Я пытаюсь получить длину связанного списка, а не количество узлов в списке.
# This list would have a length of 4, index 0->1->3->6->0
four_links_list = [1,3,4,6,0,4,0]
two_links_list = [3,2,1,0]
def my_ideal_func(list):
# Some better way to iterate over the list and count
def my_func(list, index, counter):
# We're just starting out
if index == 0 and counter == 0:
counter += 1
return my_func(list, list[index], counter)
# Keep going through the list as long as we're not looping back around
elif index != 0:
counter += 1
return my_func(list, list[index], counter)
# Stop once we hit a node with an index reference of 0
else:
return counter
Является ' [1, 2, 3, 1, 2, 1, 2, 1] 'действительно и какова его длина? Тем не менее вам по существу необходимо [обнаружение цикла] (https://en.wikipedia.org/wiki/Cycle_detection) – dhke
Недостатком связанного списка, конечно же, является то, что если вы не храните внешнюю длину, которую вы должны выполнять, итерации через найти его. – dashiell
Индекс (0) не находит количество элементов в связанном списке – LuigiPower