📜  stackoverflow 反向链表 (1)

📅  最后修改于: 2023-12-03 15:20:20.734000             🧑  作者: Mango

Stackoverflow 反向链表

Stackoverflow 反向链表是指将一个链表进行反转,即将链表的指针方向全部反向。在编程中,反向链表常用于解决与链表相关的问题。

实现

以下是一种使用迭代方式实现反向链表的算法示例:

class Node:
    def __init__(self, data=None):
        self.data = data
        self.next = None

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

上述算法通过迭代的方式遍历链表,将每个节点的 next 指针指向其前一个节点,从而实现链表的反转。

示例
# 创建一个链表: 1 -> 2 -> 3 -> 4 -> 5
head = Node(1)
head.next = Node(2)
head.next.next = Node(3)
head.next.next.next = Node(4)
head.next.next.next.next = Node(5)

# 反向链表
reversed_head = reverse_linked_list(head)

# 输出反向链表的内容: 5 -> 4 -> 3 -> 2 -> 1
curr = reversed_head
while curr:
    print(curr.data)
    curr = curr.next

输出结果如下:

5
4
3
2
1
总结

Stackoverflow 反向链表是一个常用的编程技巧,可以在解决与链表相关的问题时发挥重要作用。上述示例提供了一种使用迭代方式实现的算法,你可以根据具体需求选择相应的实现方式。