python版本
反转链表
http://www.nowcoder.com/questionTerminal/75e878df47f24fdc9dc3e400ec6058ca
分成三种情况讨论:
1、链表有 0个或 1个节点:直接返回 pHead
2、链表有 2个节点:将第 2个节点的 next指向头节点,头节点的 next指向 None
3、链表有大于 2个节点:
----声明 3个指针 p1、p2、p3,p1指向第 2个节点,p2指向第一个节点,p3指向 None
----完成这些之后按照下面的规则移动节点,直到 p3为 None为止
--------1、p2.next = p3
--------2、p3 = p2
--------3、p2 = p1
--------4、p1 = p1.next
----当循环退出后再执行:p2.next = p3
----最后 p2就是反转后的链表的头节点
# -*- 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 pHead is None or pHead.next is None: # 0个或 1个节点 return pHead elif pHead.next.next is None: # 2个节点 newHead = pHead.next.next pHead.next.next = pHead pHead.next = None return newHead else: # 超过 2个节点 p1 = pHead.next p2 = pHead p3 = None while not p1 is None: p2.next = p3 p3 = p2 p2 = p1 p1 = p1.next p2.next = p3 return p2