我被要求反转 a ,它以 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
?
原文由 Ramya 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以使用 mod 函数来获取每次迭代的余数,显然这将有助于反转列表。我认为你是 Mission R and D 的学生