python 链表的反转

code

#!/usr/bin/python
# -*- coding: utf-8 -*-

class ListNode: 
  def __init__(self,x): 
    self.val=x
    self.next=None

def recurse(head,newhead):  #递归,head为原链表的头结点,newhead为反转后链表的头结点 
  if head is None: 
    return 
  if head.next is None: 
    newhead=head
  else : 
    newhead=recurse(head.next,newhead)
    head.next.next=head
    head.next=None
  return newhead
   
head=ListNode(1)      #测试代码 
p1=ListNode(2)     # 建立链表1->2->3->4->None 
p2=ListNode(3)
p3=ListNode(4)

head.next=p1
p1.next=p2
p2.next=p3
newhead=None


p=recurse(head,newhead)    #输出链表4->3->2->1->None 

while p: 
  print p.val
  p=p.next

输出
4
3
2
1




参考: https://www.jb51.net/article/134706.htm
 

原文地址:https://www.cnblogs.com/sea-stream/p/11216577.html