In [22]:
class Node:
def __init__(self,val=None,next_node=None):
self.data=val
self.next=next_node
def __repr__(self):
cur=self
s=str(cur.data)
while cur.next:
cur=cur.next
s=s+'->'+str(cur.data)
return s
def Reverse1(head):
if not head:
return None
cur = head
pre=None
while cur:
n= cur.next
cur.next=pre
pre=cur
cur=n
return pre
def Reverse2(head):
if not head:
return None
def relink(cur,pre):
if not cur:
return pre
n=cur.next
cur.next=pre
return relink(n, cur)
return relink(head,None)
H=Node(1, Node(2, Node(3)))
print(Reverse1(H))
H=Node(1, Node(2, Node(3)))
H=Node(1, Node(2))
print(Reverse2(H))