跳到主要内容

单链表逆置?

参考答案:

单链表的逆置是一个常见的操作,可以通过迭代或递归的方法实现。下面是使用迭代方法来实现单链表逆置的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 指针指向前一个节点,从而实现链表的逆置。prevcurr 分别表示当前节点的前一个节点和当前节点,每次迭代时,将 currnext 指针指向 prev,然后将 prevcurr 前移一步,直到遍历完整个链表。最后返回逆置后的链表的头节点 prev

这个算法的时间复杂度是 O(n),其中 n 是链表的长度,因为需要遍历整个链表。空间复杂度是 O(1),因为只使用了常量级别的额外空间。