Использование самоссылающихся списков - PullRequest
11 голосов
/ 16 сентября 2010

Я знаю, что можно создать список самоссылки на таких языках, как Python:

>>> my_list = [1,2]
>>> my_list.append(my_list)
>>> print my_list
[1,2,[...]]
>>> print my_list[0]
1
>>> print my_list[2]
[1,2,[...]]

Какие алгоритмы выигрывают от списков самоссылки?Я не могу думать об этом.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 16 сентября 2010

Самостоятельные списки и, вообще говоря, циклические структуры данных могут быть вызваны при представлении графа с использованием структур данных.

Например, рассмотрим это наивное представление графа: каждый узел является либоатомное значение или список узлов, с которыми оно связано.Круг может заставить список содержать другой список, который содержит список.Самокружность, т. Е. Ребро от узла к себе, вызовет самоссылающийся список.

0 голосов
/ 16 сентября 2010

Если вы спрашиваете только о списках, то я не могу сейчас думать о чем-то, кроме, может быть, рекурсивного создания / поиска в структуре данных, смоделированной как список.

Но одним из применений самоссылки может быть это Определение класса самоссылки в python

0 голосов
/ 16 сентября 2010

В большинстве рекурсивных определений проблем используются какие-либо самоотносимые объекты или данные с самореференциальным определением.

Я бы добавил ссылку на Википедию, поскольку она обеспечивает хорошее чтение:

Другие на SO

...