数据结构Python版---翻转链表(Day9)

文章目录

    • 1.1 算法原理:
    • 1.2 翻转链表
    • 2.1 翻转链表

1.1 算法原理:

定义三个指针:
1)保存下一个节点
2)当前节点指向上一个节点
3)移动指针
循环


1.2 翻转链表

题意:反转一个单链表。

示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL
数据结构Python版---翻转链表(Day9)_第1张图片

数据结构Python版---翻转链表(Day9)_第2张图片


2.1 翻转链表

1)保存下一个节点
数据结构Python版---翻转链表(Day9)_第3张图片

2)当前节点指向上一个节点
数据结构Python版---翻转链表(Day9)_第4张图片

3)移动指针

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

def reverseList(head: ListNode) -> ListNode:
    # 初始化三个指针
    prev = None  # 前一个节点
    curr = head  # 当前节点
    next_node = None  # 下一个节点
    
    # 遍历链表,将每个节点的 next 指向它的前驱节点
    while curr is not None:
        next_node = curr.next  # 保存下一个节点
        curr.next = prev       # 当前节点指向上一个节点
        
        prev = curr            # 移动指针
        curr = next_node       # 移动指针
    
    return prev  # 返回反转后的头节点

⭐⭐⭐ 嘟嘟崽 ⭐⭐⭐
⭐⭐⭐ 点赞 + 收藏 ≠ 关注 ⭐⭐⭐

你可能感兴趣的:(数据结构Python版,链表,数据结构,算法)