206 反轉鍊錶

2021-10-21 05:55:34 字數 1810 閱讀 5390

# 防止空鍊錶

return

l = listnode(

)while head.

next

:# 採用頭插法

l.val = head.val

head = head.

next

front = listnode(

)# 頭插新結點

front.

next

= l l = front

l.val = head.val # 最後乙個迴圈外單獨賦值

return l

class

solution

:def

reverselist

(self, head: listnode)

-> listnode:

prev =

none

# 前向指標

cur = head # 當前指標

while cur:

# 同時防止了空列表

nex = cur.

next

# 後向指標,移動到下乙個結點

cur.

next

= prev # 當前結點和後向斷開,插入前向的頭部

prev = cur # 前向結點更新

cur = nex # 指標回到後向

return prev

# definition for singly-linked list.

# class listnode:

# def __init__(self, val=0, next=none):

# self.val = val

# self.next = next

class

solution

:def

reverselist

(self, head: listnode)

-> listnode:

ifnot head or

not head.

next

:# 防止空鍊錶 , head.next為none說明到了鍊錶末尾

return head

newhead = self.reverselist(head.

next

)# 可以認為是檢查是否為次末尾結點

head.

next

.next

= head # 讓末尾結點指向次末尾結點

head.

next

=none

# 次末尾結點作為末尾結點

return newhead

206 反轉鍊錶

任務描述 思路 遇到問題 修改 迴圈前判斷傳入引數是否為空 迭代時沒有考慮l3.next none的情況 實現 definition for singly linked list.class listnode def init self,x self.val x self.next none cla...

206 反轉鍊錶

反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 迭代就不說了,儲存當前節點的前繼節點迴圈改變指標指向就行。我自己先寫了個遞迴的,但看了題解的遞迴,一比就比下去了。class solution def reverselist self,head listn...

206 反轉鍊錶

題目 反轉乙個單鏈表。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null 思路 首先,我們建立兩個新的空節點 prev 和 newhead 我們原來的第乙個節點的下乙個節點指向prev,然後再讓prev 指向第乙個節點,這樣就完成了第乙個節點的逆置,以此類推就可以翻轉這個鍊...