单链表逆置?
参考答案:
单链表的逆置是一个常见的操作,可以通过迭代或递归的方法实现。下面是使用迭代方法来实现单链表逆置的Python代码:
class ListNode:
def __init__(self, x):
self.val = x
self.next = None
def reverseList(head):
prev = None
curr = head
while curr:
next_temp = curr.next # 保存下一个节点
curr.next = prev # 反转指针方向
prev = curr # 前移prev和curr
curr = next_temp
return prev
在这段代码中,ListNode
是链表的节点类,每个节点有一个 val
属性表示节点的值,以及一个 next
属性表示下一个节点的引用。
reverseList
函数接受一个链表的头节点 head
,然后通过迭代的方式遍历链表,将每个节点的 next
指针指向前一个节点,从而实现链表的逆置。prev
和 curr
分别表示当前节点的前一个节点和当前节点,每次迭代时,将 curr
的 next
指针指向 prev
,然后将 prev
和 curr
前移一步,直到遍历完整个链表。最后返回逆置后的链表的头节点 prev
。
这个算法的时间复杂度是 O(n),其中 n 是链表的长度,因为需要遍历整个链表。空间复杂度是 O(1),因为只使用了常量级别的额外空间。