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

  • 主要注意当头结点为空或者整个链表只有一个结点时,翻转后的链表断裂,返回的翻转之后的头节点不是原来的尾节点。所以需要一个翻转后的头节点,一个指向当前结点的指针,两个分别指向当前结点的前后结点的指针,防止断裂。也可以使用递归。
  • 用一个Pre节点设置为None节点,设置一个当前node节点,初始时为开始节点,用一个临时tmp节点接受当前node节点的下一个节点,此时设node节点的下一个节点为None节点,Pre节点为当前node节点,然后node节点设为临时tmp节点.以此循环直至node节点不存在。
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        if not pHead or not pHead.next:
            return pHead
        pre = None
        node = pHead
        while node:
            tmp = node.next
            node.next = pre
            pre = node
            node = tmp
        return pre