剑指offer JZ15:反转链表

剑指offer JZ15:反转链表

问题

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

思路

非常基础的链表题,几乎所有学习链表的程序员都会在一开始学习这个算法。

大思路就是运用三个变量存储上一个,现在和下一个链表,然后将现在的next指向上一个链表,在更新三个变量。

唯一需要注意的是,当while循环结束时(也即是curnode到达了链表尾),此时curnode.next并没有被指向lastnode,需要在后面加上。

代码及解释

class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if pHead == None or pHead.next == None:
            return pHead
        curnode = pHead
        lastnode = None
        nextnode = pHead.next
        while curnode.next:
            curnode.next = lastnode
            lastnode = curnode
            curnode = nextnode
            nextnode = curnode.next
        curnode.next = lastnode
        return curnode

你可能感兴趣的:(剑指offer)