反转链表是 LeetCode 中的一个经典题目。在这个案例研究中,我们将探讨如何实现链表的反转。

问题描述

给定一个链表,将其反转。例如:

输入: 1->2->3->4->5
输出: 5->4->3->2->1

解决方案

以下是一个使用 Python 语言实现的反转链表的示例:

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

def reverse_linked_list(head):
    prev = None
    current = head
    while current:
        next_node = current.next
        current.next = prev
        prev = current
        current = next_node
    return prev

代码解析

  1. 我们定义了一个 ListNode 类来表示链表的节点。
  2. reverse_linked_list 函数接受链表的头节点 head 作为参数。
  3. 我们使用三个指针:prevcurrentnext_node
  4. 在循环中,我们不断将 currentnext 指向 prev,然后更新 prevcurrent
  5. current 变为 None 时,prev 就是指向反转后链表的头节点。

扩展阅读

如果你对链表操作感兴趣,可以阅读我们关于链表基础操作的案例研究。

图片展示

链表反转的示意图:

Linked List Reverse