当前位置:实例文章 » 其他实例» [文章]206. 反转链表

206. 反转链表

发布人:shili8 发布时间:2025-03-14 07:02 阅读次数:0

**反转链表**

在计算机科学中,链表是一种常见的数据结构,它由一系列节点组成,每个节点包含一个值和一个指向下一个节点的引用。链表可以用于实现各种数据结构和算法。在本文中,我们将讨论如何反转一个链表。

**什么是反转链表**

反转链表是一种操作,通过改变链表中的每个节点的指针来使链表的顺序相反。例如,如果原链表为 A -> B -> C -> D,则反转后变为 D -> C -> B -> A。

**反转链表的方法**

有两种常见的方法可以实现反转链表:

1. **递归法**
2. **迭代法**

### 递归法递归法是通过递归函数来实现反转链表的。每次递归函数都会返回一个新的链表头部,直到整个链表都被反转。

class Node:
 def __init__(self, value):
 self.value = value self.next = Nonedef reverse_linked_list(head):
 """
 反转链表 :param head: 链表的头部节点 :return: 反转后的链表头部节点 """
 if not head or not head.next:
 return head new_head = reverse_linked_list(head.next)
 # 将原链表的最后一个节点指向新链表的头部 head.next.next = head head.next = None return new_head# 示例代码head = Node(1)
head.next = Node(2)
head.next.next = Node(3)

new_head = reverse_linked_list(head)

while new_head:
 print(new_head.value, end=" ")
 new_head = new_head.next


### 迭代法迭代法是通过一个循环来实现反转链表的。每次循环都会将原链表的最后一个节点指向新链表的头部。

def reverse_linked_list(head):
 """
 反转链表 :param head: 链表的头部节点 :return: 反转后的链表头部节点 """
 prev = None curr = head while curr:
 # 将原链表的最后一个节点指向新链表的头部 next_node = curr.next curr.next = prev # 移动到下一个节点 prev = curr curr = next_node return prev# 示例代码head = Node(1)
head.next = Node(2)
head.next.next = Node(3)

new_head = reverse_linked_list(head)

while new_head:
 print(new_head.value, end=" ")
 new_head = new_head.next


**总结**

在本文中,我们讨论了如何反转一个链表。我们介绍了两种方法:递归法和迭代法。通过使用这些方法,可以轻松地实现链表的反转操作。

相关标签:
其他信息

其他资源

Top