ITPub博客

首页 > 应用开发 > Python > python如何反转一个单链表?

python如何反转一个单链表?

原创 Python 作者:mingtian66 时间:2024-11-07 10:32:40 0 删除 编辑

可以通过遍历单链表并调整指针的方向来反转它。以下是一个 Python 实现:

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

class LinkedList:
    def __init__(self):
        self.head = None

    def insert(self, value):
        """在链表头部插入新节点"""
        new_node = ListNode(value)
        new_node.next = self.head
        self.head = new_node

    def reverse(self):
        """反转链表"""
        prev = None
        current = self.head
        while current:
            next_node = current.next  # 暂存下一个节点
            current.next = prev       # 将当前节点的 next 指向前一个节点
            prev = current            # 前一个节点移动到当前节点
            current = next_node       # 当前节点移动到下一个节点
        self.head = prev              # 更新头节点为反转后的第一个节点

    def __repr__(self):
        """打印链表"""
        nodes = []
        current = self.head
        while current:
            nodes.append(str(current.value))
            current = current.next
        return " -> ".join(nodes)

# 测试单链表反转
ll = LinkedList()
ll.insert(1)
ll.insert(2)
ll.insert(3)
ll.insert(4)

print("反转前的链表:", ll)

ll.reverse()

print("反转后的链表:", ll)

说明

    初始化链表:insert 方法用于在链表头部插入一个新节点。
    反转链表:reverse 方法使用迭代的方式遍历链表,同时调整节点的 next 指针,使链表的方向反转。
    打印链表:__repr__ 方法用于打印链表内容。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040412/viewspace-3045476/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2024-08-07

  • 博文量
    589
  • 访问量
    603025