链表的翻转可以通过多种方法实现,其中最常用的是使用三个指针进行遍历和翻转。下面是一个使用 Python 实现的示例:
python
class ListNode:
def init(self, x):
self.val = x
self.next = None
def reverseList(head):
prev = None
curr = head
while curr is not None:
next_temp = curr.next
# 暂存 curr 的下一个节点
curr.next = prev
# 将 curr 的 next 指向前一个节点
prev = curr
# prev 向后移动一位
curr = next_temp
# curr 向后移动一位
return prev
这个函数接受一个链表的头节点,然后返回翻转后的链表的头节点。在这个函数中,我们使用三个指针:prev、curr 和 next_temp。在遍历链表的过程中,我们不断地将 curr.next 指向 prev,然后将 prev 和 curr 向后移动一位,直到 curr 为空,此时 prev 就是翻转后链表的头节点。
注意,这个函数会改变输入的链表。如果你不希望改变原链表,可以先复制一份链表再进行翻转。