Python資料結構之翻轉鍊錶

2022-10-04 21:24:18 字數 1786 閱讀 6590

翻轉乙個鍊錶

樣例:給出乙個鍊錶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個節點處起之後的部分移動到鍊錶...