輸入: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 找最...