劍指offer 反轉鍊錶 python版

2021-10-08 10:48:38 字數 738 閱讀 1433

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。

如果頭結點不為空,那麼遍歷頭結點。

首先用乙個指標記錄後面的結點,防止鍊錶斷開。

然後將頭結點指向空,用乙個指標記錄指向空結點的指標,這是已經反轉的部分。最後使遍歷結點回到防斷開的鍊錶結點。

需要注意的是,如果不是在特定的編輯器練習**,是需要自己定義鍊錶結點的,有時候面試實在會想不起來,將鍊錶結點定義為乙個類,然後進行初始化。

# class listnode:

# def __init__(self, x):

# self.val = x

# self.next = none

反轉鍊錶:

class solution:

# 返回listnode

def reverselist(self, phead):

if not phead or not phead.next:

return phead

pre = none

nxt = none

while phead:

nxt = phead.next

phead.next = pre

pre = phead

phead = nxt

return pre

演算法還是要手感,一段時間不練就會生疏,知道演算法思想跟完全寫對**是兩回事兒。

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。方法1 將單鏈表儲存為陣列,然後按照陣列的索引逆序進行反轉。方法2 使用三個指標遍歷單鏈表,逐個鏈結點進行反轉。方法3 從第2個節點到第n個節點,依次逐節點插入到第1個節點 head節點 之後,最後將第乙個節點挪到新錶的表尾。public class l...

劍指offer 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。1.非遞迴 struct listnode class solution listnode ppre null listnode p phead listnode pnext null while p null else p pnext return p...

《劍指offer》 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。之前錯誤的寫法,一直不明白 原因是移位的時候,pcurr移到下一位時,裡面的值已經變成反向指標了,所以不能成功移動,就迴圈巢狀進去了,所以還需要乙個變數pnext來儲存移位前的值。struct listnode class solution phead ...