翻轉乙個鍊錶
樣例:給出乙個鍊錶1->2->3->null,這個翻轉後的鍊錶為3->2->1->null
一種比較簡單的方法是用「摘除法」。就是先新建乙個空節點,然後遍歷整個鍊錶,依次令遍歷到的節點指向新建鍊錶的頭節點。
那樣例來說,步驟是這樣的:
1. 新建空節點:none
2. 1->none
3. 2zmaqmauong->1->none
4. 3->2->1->none
**就非常簡單了:
"""
definition of listnode
class listnode(object):
def __init__(self, val, next=none):
self.val = val
self.next = next
"""
class solution:
"""
@param head: the first node of the linked zmaqmauonglist.
@return: you should return the head of the reversed linked list.
reverse it in-place.
"""
def reverse(self, head):
temp = none
whil head:
cur = head.next
head.next = temp
temp = head
head = cur
return temp
# write your code here
當然,還有一種稍微難度大一點的解法。我們可以對鍊錶中節點依次摘鏈和鏈結的方法寫出原地翻轉的**:
"""
definition of listnode
class listnode(object):
def __init__(self, val, next=none):
self.val = val
self.next = next
"""
class solution:
"""
@param head: the first no程式設計客棧de of the linked list.
@return: you sh程式設計客棧ould return the head of the reversed linked list.
reverse it in-place.
"""
def reverse(self, head):
if head is none:
return head
dummy = listnode(-1)
dummy.next = head
pre, cur = head, head.next
while cur:
temp = cur
# 把摘鏈的地方連起來
pre.next = cur.next
cur = pre.next
temp.next = dummy.next
dummy.next = temp
return dummy.next
# write your code here
需要注意的是,做摘鏈的時候,不要忘了把摘除的地方再連起來
本文標題: python資料結構之翻轉鍊錶
本文位址:
python資料結構之鍊錶
鍊錶 linked list 由於python是動態語言,可以直接把物件賦值給新的變數,於是在python一切皆為物件的原理上實現鍊錶的各項操作。在實現鍊錶python類的屬性和方法操作之前,先整理一些鍊錶的理論知識。一 鍊錶的基本結構鍊錶是通過乙個個節點 node 組成的,每個節點都包含了稱為資料...
資料結構 Python實現 之鍊錶
理解資料結構最好的方式就是用腦洞把它想象出來。一 節點 class node def init self,data none self.data data self.left none self.right none node node 5 現在請你閉眼在腦海創造一片虛無縹緲的空間,空間裡產生乙個盒...
Python資料結構之旋轉鍊錶
題目描述 給定乙個鍊錶,旋轉鍊錶,使得每個節點向右移動k個位置,其中k是乙個非負數 樣例 給出鍊錶1 2 3 4 5 null和k 2 返回4 5 1 2 3 null 首先,觀察一下這個題目要達到的目的,其實,換一種說法,可以這樣來描述 給出乙個k值,將鍊錶從倒數第k個節點處起之後的部分移動到鍊錶...