題目描述
輸入一個鏈表,反轉鏈表后,輸出新鏈表的表頭,題目決議:
這個題目的題意其實非常簡單,最開始我們的鏈表的指向是這樣的:

將其改變反向,變成如下所示的方向即可:

可以看到最開始我們的表頭指向了None,然后表尾卻指向了倒數第二個鏈表,中間的鏈表指向全部反向,這也就是這個題目要讓我們干的事情,那么我們如何實作這個鏈表的反轉呢?
首先我們開辟出一個新的空間nextNode,用于裝載還沒有實作鏈表反轉的部分,剩余的空間preNode用于裝載已經反轉的部分,代碼如下所示:
class Solution: # 回傳ListNode,到底要讓我回傳啥?回傳的是新鏈表的表頭,這個鏈表當中的所有指向已經全部重新排列, def ReverseList(self, pHead): # write code here、 preNode=None while pHead: nextNode = pHead.next#指向下一個記憶體空間 pHead.next = preNode#更換指標的指向為前一個記憶體空間 preNode=pHead#把當前節點從None變成pHead, pHead=nextNode return preNode
假設我們在做第一步的時候如下圖所示:
我們先拿掉phead當中的表頭,將其指向preNode也就是None,這樣拿掉的這個表頭以及已經具備新的指向的表頭用preNode來儲存,剩下的nextNode變成新的phead,進入到下一步重新進行這個回圈,新的回圈依然拿掉新的phead的表頭將其變換指向后灌入preNode當中,從此往復,就會將整個鏈表的指向全部反轉了,如下圖所示:
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/3885.html
標籤:其他
