# -*- 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 deque
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
# write code here
if not pHead:
return []
tmp = deque()
while pHead:
tmp.appendleft(pHead.val)
pHead = pHead.next
return tmp
def ReverseList2(self, pHead):
# 反转链表
if pHead == None:
return None
pre = None
pnext = None
ListNode(pre)
ListNode(pnext)
while pHead:
pnext = pHead.next
pHead.next = pre
pre = pHead
pHead = pnext
return pre
node1 = ListNode(12)
node2 = ListNode(4)
node3 = ListNode(7)
node1.next = node2
node2.next = node3
S = Solution()
p = S.ReverseList(node1)
print(p)
剑指offer 之 反转链表
最新推荐文章于 2021-02-11 05:56:37 发布