题目描述:
定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。
示例:
输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL
解题思路:
需要三个指针
1.一个保留当前节点的next,防止链表断裂
2。一个表示当前节点的前驱节点,用于反转
3。表示遍历当前节点
class Solution:
def reverseList(self, head: ListNode) -> ListNode:
if not head:
return []
pnode=head
pre=None
while pnode:
pnext=pnode.next#保存当前节点的下一个节点,防止链表断掉
if pnext is None:#当前节点是最后一个节点
pnew=pnode#反转后的头节点
pnode.next=pre
pre=pnode
pnode=pnext
return pnew
递归做法
if not head or head.next is None:
return head
re=self.reverseList(head.next)#保存新的头节点
head.next.next=head
head.next=None
return re