題目:
給定乙個單鏈表的頭指標 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 ...