📜  反向链表 - Python (1)

📅  最后修改于: 2023-12-03 14:50:32.894000             🧑  作者: Mango

反向链表 - Python

什么是反向链表?

反向链表是指将一个单向链表倒序形成的一种新的链表结构。它的作用是使得链表的尾节点变成了头节点,头节点变成了尾节点,从而方便链表的遍历操作。

如何实现反向链表?

在Python中,我们可以利用链表的节点结构实现反向链表。具体实现方法如下:

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

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

    # 添加元素
    def add(self, val):
        node = Node(val)
        if not self.head:
            self.head = node
        else:
            cur = self.head
            while cur.next:
                cur = cur.next
            cur.next = node

    # 反转链表
    def reverse(self):
        prev = None
        cur = self.head
        while cur:
            nex = cur.next
            cur.next = prev
            prev = cur
            cur = nex
        self.head = prev

    # 输出链表
    def printList(self):
        res = []
        cur = self.head
        while cur:
            res.append(cur.val)
            cur = cur.next
        return res

其中,Node类表示链表的节点,包含节点的值(val)和指向下一个节点的指针(next);NodeList类则表示链表本身,包括链表的头节点(head)和链表的三个基本操作——添加元素、反转链表和输出链表。

在反转链表的操作中,我们定义了三个变量,即prev、cur和nex,分别表示当前节点的前一个节点、当前节点和当前节点的后一个节点。通过循环遍历整个链表,利用cur和nex不断更新prev和cur的值,从而实现链表的反转操作。

最后,我们可以利用printList方法输出链表的元素,来检验链表反转是否成功。具体代码演示如下:

# 创建链表
node_list = NodeList()
node_list.add(1)
node_list.add(2)
node_list.add(3)
node_list.add(4)
node_list.add(5)

# 输出原始链表
print("原始链表:", node_list.printList())

# 反转链表
node_list.reverse()

# 输出反转后的链表
print("反向链表:", node_list.printList())

运行结果如下:

原始链表: [1, 2, 3, 4, 5]
反向链表: [5, 4, 3, 2, 1]

可以看到,链表反转操作成功,反向链表也顺利生成。

总结

反向链表是一种非常有用的链表结构,可以方便地实现链表的倒序遍历操作。在Python中,我们可以通过定义节点类和链表类,利用反转链表操作来实现反向链表的生成。