剑指offer 之 反转链表

来源:互联网 发布:淘宝店充值话费充错了 编辑:程序博客网 时间:2024/06/10 15:34
# -*- coding:utf-8 -*-'''面试题16:反转链表基本思路:断链(1).保存当前结点pHead的下一结点pHead.next反转(2).使当前结点的下一结点pHead.next指向前一结点pre前移(3).前一结点pre前移,变成当前结点pHead(4).当前结点前移pHead = pnext成为pHead'''class ListNode:    def __init__(self, x):        self.val = x        self.next = None        from collections import dequeclass Solution:    # 返回ListNodedef ReverseList(self, pHead):        # write code hereif not pHead:return []   tmp = deque()while pHead:tmp.appendleft(pHead.val)pHead = pHead.nextreturn tmpdef ReverseList2(self, pHead):# 反转链表if pHead == None:return Nonepre = Nonepnext = NoneListNode(pre)ListNode(pnext)while pHead:pnext = pHead.nextpHead.next = prepre = pHeadpHead = pnextreturn prenode1 = ListNode(12)node2 = ListNode(4)node3 = ListNode(7)node1.next = node2node2.next = node3S = Solution()p = S.ReverseList(node1)print(p)

原创粉丝点击