中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python實現反轉部分單向鏈表

發布時間:2020-09-15 04:17:00 來源:腳本之家 閱讀:279 作者:冬日新雨 欄目:開發技術

題目:

給定一個單鏈表的頭指針 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 == 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
        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

分析:

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桃园县| 增城市| 太湖县| 东源县| 惠来县| 宁城县| 武定县| 九江县| 准格尔旗| 乌审旗| 丹巴县| 张家港市| 渝北区| 霍州市| 岳阳市| 宜川县| 抚顺市| 铜陵市| 横峰县| 老河口市| 玛纳斯县| 乌兰察布市| 平果县| 布拖县| 合作市| 海晏县| 蒲城县| 巴东县| 商河县| 巴林右旗| 江阴市| 棋牌| 永仁县| 木兰县| 达拉特旗| 杨浦区| 华池县| 思南县| 永春县| 锡林郭勒盟| 福泉市|