基础数据结构之链表的反转链表:反转整个链表(leecode 206题 简单题)
题目:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
解题思路:
就是交换指针的过程,逐步遍历所有指针,将指针的后继节点进行修改,其中修改需要一个中间节点来避免断链。
注意:
因为是单向链表,我们这里只需要修改其后驱节点即可。
修改完成的节点我们可以设置为pre,当前节点设置为curr,那么最终返回的头节点就是pre,curr是None证明已经全部处理完成。(pre初始是none,因为还没开始处理,curr初始是head节点)
核心代码:
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, val=0, next=None):
# self.val = val
# self.next = next
class Solution:def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]:# 头节点为pre,当前节点为currpre = Nonecurr = head# 遍历链表,直到尾部Nonewhile curr:# 需要使用中间节点保存之后的节点,避免断链next_temp = curr.next# 修改头节点和后继节点curr.next = prepre = curr# 链表移动curr = next_tempreturn pre
