python单链表反转

1.迭代的方式

    def reverse(self, head):
        if head is None or head.next is None:
            return head
        cur = head
        pre = None
        while cur:
            tmp = cur.next
            cur.next = pre
            pre = cur
            cur = tmp
        return pre`

2.递归的方式(面试一般问这种)

    def reverse2(self, head):
        # base case
        if head is None or head.next is None:
            return head
        cur = self.reverse2(head.next)  # 整个过程中cur是固定不变的,一直指向链表的尾节点,也就是新链表的头节点。然后递归是从下一个开始的。
        head.next.next = head  # 表示让head的下一个指向head
        head.next = None  # 断开之前的指向,防止循环递归
        return cur

posted @ 2023-01-06 11:50  公众号python学习开发  阅读(105)  评论(0编辑  收藏  举报