题目
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
第一种方法使用两个指针反转链表,建议思考过后再看答案
class node:
def __init__(self,val):
self.val=val
self.next=None
class ListNode:
def crtlis(self,l):#创建链表
he=node(l[0])
temp=he
le=len(l)
i=1
while i<le:
temp.next=node(l[i])
temp=temp.next
i+=1
return he
class Solution:
def reverseList(self,node):
cur=node
pre=None
while cur:
temp=cur.next#暂存下一节点
cur.next=pre#修改next指向
pre=cur
cur=temp
return pre
ls=[1,2,3,4,5]
#a=ListNode()
#b=a.crtlis(ls)
c=Solution()
b=c.crtlis(ls)
print(c.reverseList(b))
第二中方法递归
class node: def __init__(self,val): self.val=val self.next=None class ListNode: def crtlis(self,l):#创建链表 he=node(l[0]) temp=he le=len(l) i=1 while i<le: temp.next=node(l[i]) temp=temp.next i+=1 return he class Solution: def reverseList(self,node): def dg(cur,pre): if not cur:#递归终止条件 return pre res=dg(cur.next,cur) cur.next=pre return res return dg(node,None) ls=[1,2,3,4,5] a=ListNode() b=a.crtlis(ls) c=Solution() d=c.reverseList(b) print(d.val)