python鍊錶 鍊錶相連3個節點翻轉

2021-09-25 07:51:52 字數 1371 閱讀 4920

輸入:1->2->3->4->5->6->7->8

輸出:3->2->1->6->5->4->7->8

**

def reverse_3(head):

if head is none or head.next is none or head.next.next is none:

return head

cur1 = head

cur2 = head.next

cur3 = head.next.next

head = cur3

while cur3.next and cur3.next.next and cur3.next.next.next:

# 賦值的指標操作

nex1 = cur3.next

nex2 = cur3.next.next

nex3 = cur3.next.next.next

# 3個節點內,指標轉向

cur3.next = cur2

cur2.next = cur1

cur1.next = nex3

# 移動三個操作變數,到下一輪的3個節點

cur1 = nex1

cur2 = nex2

cur3 = nex3

# 迴圈結束時,將未完成的指標方向,補充上去

nex1 = cur3.next

cur3.next = cur2

cur2.next = cur1

cur1.next = nex1

return head

# 測試

link = linkedlist()

print("*****====before**********==")

link.add(1)

link.add(2)

link.add(3)

link.add(4)

link.add(5)

link.add(6)

link.add(7)

link.add(8)

link.print_link()

print("*****====after**********==")

new_head = reverse_3(link.head)

while new_head:

print(new_head.data)

new_head = new_head.next

# 結果

*****====before**********==12

3456

78*****====after**********==32

1654

78

演算法 鍊錶 鍊錶相交

給定兩個 單向 鍊錶,判定它們是否相交並返回交點。請注意相交的定義基於節點的引用,而不是基於節點的值。換句話說,如果乙個鍊錶的第k個節點與另乙個鍊錶的第j個節點是同一節點 引用完全相同 則這兩個鍊錶相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0...

LeetCode 鍊錶 相交鍊錶

語言 python 難度 簡單 描述 找到兩個單鏈表的重合鏈。比如 node a 4,1,8,4,5 node b 5,0,1,8,4,5 則這兩個鍊錶的起始節點為8,重合鏈為 8,4,5 node a 4,1,7,2,1 node b 5,0,1,8,4,5 則這兩個鍊錶的起始節點為null,不存...

劍指offer 鍊錶相關 鍊錶末尾插入乙個節點

include include include 向鍊錶的末尾新增乙個節點 struct listnode 我的程式 注意第乙個引數是乙個指向指標的指標 當向乙個空煉表中插入乙個節點時,新插入的節點就是鍊錶的頭指標 void addtotail1 listnode phead,int value 找最...