访问单链表的特定元素

时间:2015-07-24 00:23:48

标签: python singly-linked-list

我想创建一个函数get_element(n),它根据列表中元素的位置返回单链表的元素。如果我向函数发送-1,我希望返回最后一个元素,如果它是-2,则函数将第二个元素返回到最后一个元素,依此类推。如何在不撤消列表或引入其他属性(大小或类似)的情况下执行此操作?如果我想要第二个到最后一个我可以通过遍历列表直到current.next.next ==无,第三个到最后一个用current.next.next.next ==无,但我不知道如何概括它。 如果有人可以用Python编写任何语言的代码片段,我会很感激。

1 个答案:

答案 0 :(得分: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