难度
中
题目
请用熟悉的编程语言编写一下链表反转算法。
class Node:
def __init__(self, data):
self.data = data
self.next = None
def reverse_list(head):
# 初始化prev指针为None,current指针为头节点
prev = None
current = head
# 遍历链表节点
while current is not None:
# 保存下一个节点的指针
next_node = current.next
# 将当前节点的指针指向prev,实现反转
current.next = prev
# 更新prev和current指针
prev = current
current = next_node
# 更新头节点为反转后的最后一个节点
head = prev
return head
def print_list(head):
# 遍历打印链表节点数据
current = head
while current:
print(current.data, end=" ")
current = current.next
print()
# 用户输入链表数据
input_data = input("请输入链表数据,以空格分隔:")
data_list = input_data.split()
# 构建链表
head = None
prev_node = None
for data in data_list:
# 创建新的节点
new_node = Node(int(data))
if head is None:
head = new_node
else:
prev_node.next = new_node
prev_node = new_node
print("原始链表:")
print_list(head)
# 反转链表
new_head = reverse_list(head)
print("反转后的链表:")
print_list(new_head)