📅  最后修改于: 2023-12-03 15:37:16.022000             🧑  作者: Mango
本题目是ISRO CS 2018考试中的第47道题目。本题目在数据结构中属于链表操作的基础题目。
给定一个单向链表,将链表倒置并返回新链表的头节点。
例如,输入链表为 1->2->3->4->5
,倒置后的链表为 5->4->3->2->1
。
链表节点定义如下:
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
输入的是一个链表的头节点。
输出为倒置后的链表的头节点。
n1 = Node(1)
n2 = Node(2)
n3 = Node(3)
n4 = Node(4)
n5 = Node(5)
# 建立链表
n1.next = n2
n2.next = n3
n3.next = n4
n4.next = n5
head = n1
n5 -> n4 -> n3 -> n2 -> n1 -> None
倒置链表的方法可以采用迭代法和递归法,本题采用迭代法实现,具体思路如下:
def reverse_list(head):
"""
将链表倒置并返回新列表的头节点
:param head: 链表的头节点
:return: 倒置后的链表的头节点
"""
prev = None # 初始化prev指针
cur = head # 初始化cur指针
while cur is not None: # 遍历链表
next = cur.next # 初始化next指针
# 倒置当前节点
cur.next = prev
# 移动指针
prev = cur
cur = next
return prev # 返回倒置后的头节点
以上是该问题的Python中的参考实现。