剑指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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。