python中使用递归实现反转链表

   反转链表一般有两种实现方式,一种是循环,另外一种是递归,前几天做了一个作业,用到这东西了。

这里就做个记录,方便以后温习。

  递归的方法:

  

class Node:
        def __init__(self,init_data):
                self.data = init_data
                self.next = None

        def get_data(self):
                return self.data

        def get_next(self):
                return self.next

        def set_data(self,new_data):
                self.data = new_data

        def set_next(self,new_next):
                self.next = new_next

lista = Node(99)
listc = Node(49)
listd = Node(39)
liste = Node(29)
listf = Node(9)
lista.next = listc
listc.next = listd
listd.next = liste

def recurse(mylist,newlist):
        if mylist is None:
                return;
        if mylist.next is None:
                newlist = mylist
        else:
                newlist = recurse(mylist.next,newlist)
                mylist.next.next = mylist
                mylist.next = None

        return newlist

listg = None
plist = recurse(lista,listg)
def list_print(listd):
        while listd is not None:
                print listd.data
                listd = listd.next

print "elist is:"
list_print(liste)
print "reverse list is:"
list_print(plist)

  运行结果:

elist is:
29
39
49
99
reverse list is:
29
39
49
99
原文地址:https://www.cnblogs.com/dylancao/p/8109127.html