1 问题
已知一个单链表,如何写出算法来解决反转单链表的问题。
2 方法
建立三个变量,L、M、R互相赋值迭代,并建立指向关系,从而实现单链表的反转。
代码清单 1
代码语言:txt复制class Node(object):
def __init__(self, data, next=None):
self.val = data
self.next = next
def fun4(head):
if head == None:
return None
L,M,R = None,None,head
while R.next != None:
L = M
M = R
R = R.next
M.next = L
R.next = M
return R
if __name__ == '__main__':
l1 = Node(3)
l1.next = Node(2)
l1.next.next = Node(1)
l1.next.next.next = Node(9)
l = fun4(l1)
print (l.val, l.next.val, l.next.next.val, l.next.next.next.val)
3 结语
定义函数使三个变量迭代,确定指向,也可以使用比如循环或者递归之类的方法反转单链表。