反转链表
题目
翻转链表,如 1 -> 2 -> 3 -> 4
,翻转为 4 -> 3 -> 2 -> 1
思路
对于空节点(head is None
)或者单节点(head.next is None
),翻转后还是一样的,所以直接返回。
对于多节点的情况,如 1 -> 2
,朴素的思路是创建一个假节点 dummy_node
,依次遍历目标节点,被遍历到的节点指向 dummpy_node
。
1# Definition for singly-linked list.
2# class ListNode:
3# def __init__(self, val=0, next=None):
4# self.val = val
5# self.next = next
6class Solution:
7 def reverseList(self, head: ListNode) -> ListNode:
8 if head is None or head.next is None:
9 return head
10
11 dummy_node = None
12 while head:
13 next_node = head.next # 保存当前节点的下一个节点
14 head.next = dummy_node # 将当前节点的 next 指向反转后的链表
15 dummy_node = head # 更新 dummy_node 为当前节点
16 head = next_node # 移动到下一个节点
17
18 return dummy_node