鍊錶的反轉

2021-09-27 13:20:20 字數 1330 閱讀 7357

class solution:

def reverses(self,head):

pre = none

cur = head

while cur:

nextnode=cur.next

cur.next=pre

pre=cur

cur=nextnode

return pre

第一步:next = head.next

將 head.next 賦值給 next 變數,即next 指向了節點2,先將節點2 儲存起來。

第二步:head.next = pre (初始pre==none)

將 pre 變數賦值給 head.next,即 此時節點1 指向了 none

第四步:head = next

將 next 賦值給 head,即 head 指向了節點2,此時節點2 設為「頭節點」

開始以單鏈表的第二個元素為迴圈變數,用2個變數迴圈向後操作,並設定1個輔助變數tmp,儲存資料;

時間消耗o(n),空間消耗o(1)

'''

def reverse_linkedlist3(head):

ifhead == none or head.next == none: #邊界條件

returnhead

p1 = head #迴圈變數1

p2 = head.next #迴圈變數2

tmp = none #儲存資料的臨時變數

whilep2:

tmp = p2.next

p2.next = p1

p1 = p2

p2 = tmp

head.next = none

returnp1

鍊錶 反轉鍊錶

問題 兩兩交換鍊錶中的節點 問題 k 個一組翻轉鍊錶 問題鏈結 利用棧先進後出的特性,遍歷鍊錶,將每個結點加入棧中,最後進行出棧操作,先出棧的結點指向臨近的後出棧的結點。definition for singly linked list.struct listnode class solution ...

反轉鍊錶與分組反轉鍊錶

經典的反轉鍊錶,先上 public class listnode public class printlist system.out.println public class reverse public listnode reverse listnode root listnode pre nul...

鍊錶的反轉

鍊錶的反轉是乙個經常被問到的乙個面試題,也是乙個非常基礎的問題。比如乙個鍊錶是這樣的 1 2 3 4 5 通過反轉後成為5 4 3 2 1。最容易想到的方法遍歷一遍鍊錶,利用乙個輔助指標,儲存遍歷過程中當前指標指向的下乙個元素,然後將當前節點元素的指標反轉後,利用已經儲存的指標往後面繼續遍歷。源 如...