劍指Offer(11)——反轉鏈表

題目描述
輸入一個鏈表,反轉鏈表後,輸出鏈表的所有元素。
解:
先定義一個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            
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章