python實現反轉部分單向鍊錶

2022-10-04 18:57:12 字數 1499 閱讀 4995

題目:

給定乙個單鏈表的頭指標 head, 以及兩個整數 a 和 b,在單鏈表中反轉 linked_list[a-b] 的結點,然後返回整個鍊錶的頭指標。

例如:

單鏈表[1000, 5, 12, 100, 45, 『cecil', 999],

a = 4, b = 6,

返回的鍊錶是[1000, 5, 12, 100, 999, 『cecil', 45],也就是說,

a 和 b分別為索引值。如果a 和 b 超過了索引範圍就返回錯誤。

**:

我寫的不夠簡潔,比較繁瑣,但是能跑通,繁瑣的原因在於我使用了 for 迴圈,對於 a =www.cppcns.com= 0 的情況 for 迴圈無法識別。

def reverse_part_linked_list(head, a, b): # 反轉部分鍊錶結點,a, b分別為索引值

if head =程式設計客棧= 0:

print "empty linked list. no need to reverse."

return head

p = head

length = 1

while p != 0:

length += 1

p = p.next

if length == 1:

print "no need to reverse."

return head

if a < 0 or b > length-1 or a >= b:

raise exception("the given 'from' value and 'to' value is wrong.")

p = head

if a == 0: # 由於 for 迴圈中 xrange 的範圍問題,我就分情況寫了。

tail, head = p, p

pre = 0

for _ in xrange(a, b+1):

p = p.next

head.next = pre

pre = head

h程式設計客棧ead = p

tail.next = p

return head

else:

for _ in xrange(1,vceweikt a):

p = p.next

front, tail, head = p, p, p程式設計客棧

p = p.next

pre = 0

for _ in xrange(a+1, b+2):

p = p.next

head.next = pre

pre = head

head = p

front.next = pre

tail.next = p

return head

分析:核心依然是反轉鍊錶的指標問題,均是一遍迴圈,時間複雜度o(n),空間複雜度為若干個變數。

本文標題: python實現反轉部分單向鍊錶

本文位址:

反轉部分單向鍊錶

給定乙個單向鍊錶的頭節點head,以及兩個整數from和to,在單項鍊表上把第from個節點到to個節點的這一部分進行反轉。例如 1 2 3 4 5 null from 2,to 4 調整結果為1 4 3 2 5 null 再如1 2 3 null from 1,to 3 調整結果為3 2 1 nu...

反轉部分單向鍊錶

說明 本文是左程雲老師所著的 程式設計師面試 指南 第二章中 反轉部分單向鍊錶 這一題目的c 復現。本文只包含問題描述 c 的實現以及簡單的思路,不包含解析說明,具體的問題解析請參考原書。感謝左程雲老師的支援。題目 給定乙個單向鍊錶的頭節點 head,以及兩個整數 from 和 to,在單向鍊錶上把...

反轉部分單向鍊錶

給定乙個單向鍊錶的頭節點head,以及兩個整數from和to,在單向鍊錶上把第from個節點到第to個節點這一部分進行反轉。例如 1 2 3 4 5 6 null,from 3,to 5 調整結果為 1 2 5 4 3 6 null 1 2 3 null,from 1,to 3 調整結果為 3 2 ...