Reversing a linked list in python

linked-list, python

Solution

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

Problem

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) ``` 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`?

Original source

Related problems