反转python中的链表

发布于 2021-01-29 17:48:28

我被要求反转一个以head为参数的参数,其中head是一个链表,例如:1-> 2->
3这是从已经定义的函数返回的,我试图以这种方式实现函数reverse_linked_list:

def reverse_linked_list(head):
    temp = head
    head = None
    temp1 = temp.next
    temp2 = temp1.next
    temp1.next = None
    temp2.next = temp1
    temp1.next = temp
    return temp2

class Node(object):
    def __init__(self,value=None):
        self.value = value
        self.next = None

    def to_linked_list(plist):
    head = None
    prev = None
    for element in plist:
        node = Node(element)
        if not head:
            head = node
        else:
            prev.next = node
        prev = node
    return head

    def from_linked_list(head):
    result = []
    counter = 0
    while head and counter < 100: # tests don't use more than 100 nodes, so bail if you loop 100 times.
        result.append(head.value)
        head = head.next
        counter += 1
    return result

    def check_reversal(input):
        head = to_linked_list(input)
        result = reverse_linked_list(head)
        assert list(reversed(input)) == from_linked_list(result)

称为:check_reversal([1,2,3])。我编写的用于反转列表的函数具有给定的功能,[3,2,1,2,1,2,1,2,1]并且仅适用于长度为3的列表。如何将其概括为长度为列表的n

关注者
0
被浏览
78
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    U可以使用mod函数获取每次迭代的余数,并且显然可以帮助反转列表。我想你是R和D团的学生

    head=None   
    prev=None
    for i in range(len):
        node=Node(number%10)
        if not head:
            head=node
        else:
            prev.next=node
        prev=node
        number=number/10
    return head
    


推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看