问题描述
我被要求反转一个以head为参数的参数,其中head作为一个链表,例如:1-> 2-> 3从已经定义的函数返回,我试图以这种方式实现函数reverse_linked_list:
I am asked to reverse a which takes head as parameter where as head is a linked list e.g.: 1 -> 2 -> 3 which was returned from a function already defined I tried to implement the function reverse_linked_list in this way:
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
的列表?
It is called in this way: check_reversal([1,2,3])
. The function I have written for reversing the list is giving [3,2,1,2,1,2,1,2,1]
and works only for a list of length 3. How can I generalize it for a list of length n
?
推荐答案
U可以使用mod函数来获取每次迭代的余数,这显然将有助于反转列表.我想你是来自任务R和D的学生
U can use mod function to get the remainder for each iteration and obviously it will help reversing the list . I think you are a student from Mission R and 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
这篇关于反转python中的链表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!