Python 访问单链表的特定元素
我想创建一个函数get_element(n),根据元素在列表中的位置返回单链表的元素。如果我将-1发送给函数,我希望返回最后一个元素,如果是-2,函数将第二个返回给最后一个元素,依此类推。如何在不反转列表或引入其他属性(大小或类似属性)的情况下执行此操作?如果我想要倒数第二个,我可以遍历列表直到current.next.next==None,第三个倒数第三个是current.next.next==None,但我不知道如何概括它。Python 访问单链表的特定元素,python,singly-linked-list,Python,Singly Linked List,我想创建一个函数get_element(n),根据元素在列表中的位置返回单链表的元素。如果我将-1发送给函数,我希望返回最后一个元素,如果是-2,函数将第二个返回给最后一个元素,依此类推。如何在不反转列表或引入其他属性(大小或类似属性)的情况下执行此操作?如果我想要倒数第二个,我可以遍历列表直到current.next.next==None,第三个倒数第三个是current.next.next==None,但我不知道如何概括它。 如果有人能用任何语言为我编写这段代码,我将不胜感激,最好是用Pyt
如果有人能用任何语言为我编写这段代码,我将不胜感激,最好是用Python。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
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
The
mat.
the
保留最后访问的
-n
元素的队列,并在到达None
时获取其第一个元素。几乎等同于颠倒清单,但这确实是唯一的办法。