第一种: 遍历中,进行翻转
- 保存备份遍历的p
- 设置pre=None
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
# 构建哨兵
pre = None
p = pHead
while p:
recovery = p.next # p 需要用来遍历所以要恢复
p.next = pre
pre = p
p = recovery
return pre
第二种,递归翻转
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if not pHead.next or not pHead:
return pHead
new_head = self.ReverseList(pHead.next)
pHead.next.next = pHead
pHead.next = None
return new_head