国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現(xiàn)反轉(zhuǎn)部分單向鏈表

2020-02-15 23:04:11
字體:
供稿:網(wǎng)友

題目:

給定一個單鏈表的頭指針 head, 以及兩個整數(shù) a 和 b,在單鏈表中反轉(zhuǎn) linked_list[a-b] 的結(jié)點,然后返回整個鏈表的頭指針。
例如:
單鏈表[1000, 5, 12, 100, 45, ‘cecil', 999],
a = 4, b = 6,
返回的鏈表是[1000, 5, 12, 100, 999, ‘cecil', 45],也就是說,
a 和 b分別為索引值。如果a 和 b 超過了索引范圍就返回錯誤。

代碼:

我寫的不夠簡潔,比較繁瑣,但是能跑通,繁瑣的原因在于我使用了 for 循環(huán),對于 a == 0 的情況 for 循環(huán)無法識別。

  def reverse_part_linked_list(head, a, b): # 反轉(zhuǎn)部分鏈表結(jié)點,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 循環(huán)中 xrange 的范圍問題,我就分情況寫了。      tail, head = p, p      pre = 0      for _ in xrange(a, b+1):        p = p.next        head.next = pre        pre = head        head = p      tail.next = p      return head    else:      for _ in xrange(1, 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

分析:

核心依然是反轉(zhuǎn)鏈表的指針問題,均是一遍循環(huán),時間復(fù)雜度o(n),空間復(fù)雜度為若干個變量。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 澎湖县| 三都| 四子王旗| 怀来县| 肇源县| 长岛县| 清远市| 嘉善县| 汨罗市| 鄢陵县| 桐城市| 霸州市| 盈江县| 平阳县| 溆浦县| 交城县| 商都县| 五河县| 武鸣县| 马山县| 安徽省| 大悟县| 砀山县| 汪清县| 固阳县| 屏东市| 新巴尔虎左旗| 达孜县| 宁化县| 炉霍县| 开阳县| 诸暨市| 常德市| 景泰县| 台南市| 基隆市| 芦山县| 皮山县| 普定县| 凉城县| 盐边县|