15. 反转链表

题目描述


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


使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。当前节点不为空时进行遍历:
当前节点的next = 前一个节点lastNode(进行前后翻转)
前一个节点(lastNode) = 当前节点(往后走一格)
当前节点 = 当前节点的next(往后走一格)
到最后当前节点为空,链表的首节点为lastNode
代码实现

# -*- coding:utf-8 -*-
# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if not pHead or not pHead.next:
            return pHead
        lastNode = None
        while pHead:
            temp  = pHead.next
            pHead.next = lastNode 
            lastNode = pHead
            pHead = temp
        return lastNode