美文网首页剑指offer-python
面试16:链表反转

面试16:链表反转

作者: fighting_css | 来源:发表于2018-06-24 16:28 被阅读0次

【题目描述】
输入一个链表,反转链表后,输出新链表的表头。
【思路】
采用三个节点,cur为当前需要反转节点,pre为cur之前反转好的节点,pos为下一步将要反转的节点。
例如:
链表 1->2-> 3-> 4 ->5 ->None
第一次循环
循环前:
pre = None
cur = 1
pos = 2
循环后:
None <-1 2-> 3 ->4 ->5-> None
pre = None 1
cur = 2
pos = 3
第二次循环后:
None <-1<- 2 3->4->5->None
依次循环
当pos==None时
pre = None <-1<- 2 <-3 <-4
cur = 5
执行cur.next = pre即可
【代码】

# class ListNode:
#     def __init__(self, x):
#         self.val = x
#         self.next = None
class Solution:
    # 返回ListNode
    def ReverseList(self, pHead):
        # write code here
        if pHead == None or pHead.next == None:
            return pHead
        #当前节点
        cur = pHead
        pre = None
        pos = pHead.next
        while pos!=None:
            cur.next = pre
            pre = cur
            cur = pos
            pos = pos.next
        cur.next = pre
        return cur

相关文章

  • 面试16:链表反转

    【题目描述】输入一个链表,反转链表后,输出新链表的表头。【思路】采用三个节点,cur为当前需要反转节点,pre为c...

  • 剑指offer目录

    目录 面试题3 在二维数组中查找 面试题15 链表中倒数第K个数 面试题16 反转链表 面试题44 扑克牌的顺子

  • 面试题16 反转链表

    题目链接:面试题16 反转链表 我的思路 反转链表的基本思路就是把指向后驱的指针指向前驱 如果把指针的指向改变,无...

  • 反转链表

    《剑指offer》面试题24:输入一个链表,反转链表后,输出新链表的表头。 思路:反转链表就是将链表中每一个节点的...

  • 剑指offer 15~17

    15.反转链表输入一个链表,反转链表后,输出链表的所有元素。 16.合并两个排序的链表输入两个单调递增的链表,输出...

  • 单链表的就地逆置--java实现(含头节点和不包含头节点)

    前沿:链表是面试中经常问道的知识点,比如链表反转,就地反转,判断单链表是否相交,判断链表是否有环等都是常问的问题....

  • 数据结构之 swift 实现链表反转

    链表反转很熟悉的面试题,关于链表的基础知识就不再累赘了,如何swift实现链表的反转。 传入链表的头结点 返回一个...

  • 理解单链表的反转(java实现)

    要求很简单,输入一个链表,反转链表后,输出新链表的表头。  反转链表是有2种方法(递归法,遍历法)实现的,面试官最...

  • 面试题16:反转链表

    题目:定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点 递归算法: 1.找到最后一个节点和倒...

  • 面试题16:反转链表

    题目描述 输入一个链表,反转链表后,输出链表的所有元素。 代码实现 主要思路 1、首先我们需要3个结点,第一个是当...

网友评论

    本文标题:面试16:链表反转

    本文链接:https://www.haomeiwen.com/subject/gnqsyftx.html