剑指offer:反转链表

输入一个链表,反转链表后,输出新链表的表头。

(Leetcode 206: reverse linked list)
反转链表是比较重要的题,面试笔试经常会考。
做链表题的时候,如果不知道怎么做,最好可以画一个例子看看,这样容易会有思路。
这里主要用了两种方法来做。
参考:https://blog.csdn.net/qq_24429333/article/details/87867289

image.png

def reverseList(self, head):
    prev = None          # prev记录新的链表的头结点
    while head:
        curr = head
        head = head.next   # 指向下一个结点,就是要处理的数
        curr.next = prev   # 把上一次循环的结果接上来
        prev = curr
    return prev

还有一种递归的方法:


image.png
def ReverseList(self, head):
        if head==None or head.next==None:
            return head
        newlist=ReverseList(head.next)
        head.next.next=head
        head.next=None
        return newlist

你可能感兴趣的:(剑指offer:反转链表)