Reversing a linked list in python

前端 未结 11 2370
失恋的感觉
失恋的感觉 2020-12-08 12:28

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 implemen

11条回答
  •  一向
    一向 (楼主)
    2020-12-08 12:52

    Here is the whole thing in one sheet. Contains the creation of a linked list, and code to reverse it.

    Includes an example so you can just copy and paste into an idle .py file and run it.

    class Node(object):
        def __init__(self, value, next=None): 
            self.value = value                
            self.next = next                  
    
    
    def reverse(head):
        temp = head
        llSize = 0
        while temp is not None:
            llSize += 1
            temp = temp.next
        for i in xrange(llSize-1,0,-1):
            xcount = 0
            temp = head
            while (xcount != i):
                temp.value, temp.next.value = temp.next.value, temp.value
                temp = temp.next
                xcount += 1
        return head
    
    
    def printnodes(n):
        b = True
        while b == True:
            try:
                print n.value
                n = n.next
            except:
                b = False
    
    n0 = Node(1,Node(2,Node(3,Node(4,Node(5,)))))
    print 'Nodes in order...'
    printnodes(n0)
    print '---'
    print 'Nodes reversed...'
    n1 = reverse(n0)
    printnodes(n1)
    

提交回复
热议问题