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
全部评论

相关推荐

大佬们考的怎么样?看样子不能只刷acm编程题了,机器学习题也要刷下。😭
牛客561236133号:绷不住了,皮什么玩意来着
投递美团等公司10个岗位 >
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务