反转链表

题目描述

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

思路

首先针对普通的情况,这里建立两个指针,pre和cur,分别表示前一节点和当前节点。对于当前节点,先将cur的下一个节点保存起来,然后转换指针方向,把cur指向pre。然后整体向后移动,pre移动到cur,cur移动到事先保存的cur的原本的next。此时移动后cur并没有指向pre。当再次处理当前cur时,cur会指向pre。
第二步就是考虑特殊情况,
1 表头是空,直接返回空
2 整个链表只有一个节点,返回这一个节点

代码

class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if pHead is None:
            return None
        if pHead.next is None:
            return pHead
        pre = None
        cur = pHead
        while cur is not None: #A B->C 假设cur是B
            temp = cur.next #temp: C
            cur.next = pre #A <-B C
            pre = cur# pre 移到B
            cur = temp# cur移到C
            if cur is None: #pre到了尾部,cur是空
                return pre
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 搞懂单链表常见面试题 Hello 继上次的 搞懂基本排序算法,这个一星期,我总结了,我所学习和思考的单链表基础知识...
    醒着的码者阅读 10,063评论 1 45
  • 题目描述 输入一个链表,反转链表后,输出新链表的表头。 解题思路 设置三个指针,head为当前节点,pre为当前节...
    繁著阅读 1,716评论 0 0
  • 这个题是面试中的常考题,在作业帮的面试中也遇到了,面试官要求手写代码。 首先要记住的是:要有三个指针, 分别是pr...
    刘小小gogo阅读 1,703评论 0 0
  • 一九八六年一间平房里,稳婆正在接生,随着羊水喷溅到墙上,一声啼哭后,一个黑的发紫的生命来到了这个平凡的世界。母亲用...
    良羽生阅读 1,157评论 0 0
  • 比swto还要健全的六项思考帽,简直了。 其实有时候经常也会被朋友打击,说我怎么瞻前顾后的。但往往分歧就在思考维度...
    大梦张吉玲阅读 786评论 0 0