題目描述
輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。
解:
先定義一個last指針,用來指向pHead指針的下一個結點
然後x0結點應該指向None,也就是pHead.next=last,它會成爲我們反轉之後的最後一個結點,讓last指向x0:last=pHead,pHead = pHead.next,這樣才完整的將x0給分離出來了
然後再相同的步驟,讓pHead往後移,然後依次將x1、x2…..移到x0全面,從而完成鏈表的反轉:
# -*- coding:utf-8 -*-
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
# 返回ListNode
def ReverseList(self, pHead):
if pHead == None or pHead.next == None:
return pHead
last = None
while pHead != None:
tmp = pHead.next #將pHead的next保存下來
pHead.next = last #pHead指向last,這一步其實是反轉鏈接的過程
last = pHead #上一步鏈接上以後,重新讓last指向此時的pHead
pHead = tmp #上面last已經代替了pHead,此時pHead就可以脫離反轉表繼續去原鏈接進行新一輪爲拆分鏈接的搬運了
return last