反转链表是 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
代码解析
- 我们定义了一个
ListNode
类来表示链表的节点。 reverse_linked_list
函数接受链表的头节点head
作为参数。- 我们使用三个指针:
prev
、current
和next_node
。 - 在循环中,我们不断将
current
的next
指向prev
,然后更新prev
和current
。 - 当
current
变为None
时,prev
就是指向反转后链表的头节点。
扩展阅读
如果你对链表操作感兴趣,可以阅读我们关于链表基础操作的案例研究。
图片展示
链表反转的示意图: