Я хочу создать функцию get_element (n), которая возвращает элемент отдельно связанного списка в зависимости от положения элемента в списке. Если я отправлю -1 функции, я хочу, чтобы последний элемент был возвращен, если он равен -2, функция возвращает второй к последнему элементу и так далее. Как я могу это сделать без изменения списка или введения дополнительных атрибутов (размер или аналогичный)? Если я хочу второй до последнего, я могу сделать это, пройдя список до current.next.next == Нет, третий до последнего с current.next.next.next == Нет, но я не знаю, как обобщить его. Я был бы признателен, если бы кто-нибудь мог написать мне этот фрагмент кода на любом языке, в Python.Доступ к определенному элементу связанного списка
-3
A
ответ
0
Python, вероятно, не самый лучший язык, чтобы выбрать, как функциональность вы хотите уже построен в:
def get_element(n):
my_list = ["The", "cat", "sat", "on", "the", "mat."]
return my_list[n]
print get_element(0)
print get_element(-1)
print get_element(-2)
Что бы дать:
The
mat.
the
Как уже упоминалось, вы можете моделировать вашу проблему с использованием очереди:
import collections
def get_element(n):
my_list = ["The", "cat", "sat", "on", "the", "mat."]
if n >= 0:
for index, element in enumerate(my_list):
if index == n:
return element
# Return last element if beyond the range
return element
else:
queue = collections.deque(maxlen=-n) # Used to simulate a queue
for element in my_list:
queue.append(element)
return queue.popleft()
print get_element(0)
print get_element(-1)
print get_element(-2)
что бы дать:
The
mat.
the
Оставьте очередь последних посещенных элементов '-n' и возьмите свой первый элемент, когда вы достигнете' None'. Почти эквивалентно изменению списка, но это действительно единственный способ сделать это. – Ryan