📅  最后修改于: 2023-12-03 14:50:32.894000             🧑  作者: Mango
反向链表是指将一个单向链表倒序形成的一种新的链表结构。它的作用是使得链表的尾节点变成了头节点,头节点变成了尾节点,从而方便链表的遍历操作。
在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中,我们可以通过定义节点类和链表类,利用反转链表操作来实现反向链表的生成。