欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2018年09月27日 15:58:43   作者:冬日新雨  
這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)反轉(zhuǎn)部分單向鏈表,具有一定的參考價值,感興趣的小伙伴們可以參考一下

題目:

給定一個單鏈表的頭指針 head, 以及兩個整數(shù) a 和 b,在單鏈表中反轉(zhuǎn) linked_list[a-b] 的結(jié)點(diǎn),然后返回整個鏈表的頭指針。
例如:
單鏈表[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é)點(diǎn),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í)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 簡單談?wù)刾ython中的多進(jìn)程

    簡單談?wù)刾ython中的多進(jìn)程

    multiprocessing模塊是python庫中最高級和功能最強(qiáng)大的模塊之一。本文就來給大家簡單講講multiprocessing一般性技巧
    2016-11-11
  • 玩轉(zhuǎn)Python發(fā)短信的實現(xiàn)

    玩轉(zhuǎn)Python發(fā)短信的實現(xiàn)

    用Python實現(xiàn)發(fā)短信功能,當(dāng)監(jiān)控到問題出現(xiàn)時,短信報警,使問題能得到及時的處理。當(dāng)然,我相信,用Python發(fā)短信應(yīng)用場景不止此一處,下面我們開始Python發(fā)短信的實現(xiàn),感興趣的朋友參考下吧
    2022-01-01
  • 關(guān)于Python面向?qū)ο缶幊痰闹R點(diǎn)總結(jié)

    關(guān)于Python面向?qū)ο缶幊痰闹R點(diǎn)總結(jié)

    Python從設(shè)計之初就已經(jīng)是一門面向?qū)ο蟮恼Z言,正因為如此,在Python中創(chuàng)建一個類和對象是很容易的。下面這篇文章將詳細(xì)給大家介紹關(guān)于Python面向?qū)ο缶幊痰闹R點(diǎn),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Python基于列表模擬堆棧和隊列功能示例

    Python基于列表模擬堆棧和隊列功能示例

    這篇文章主要介紹了Python基于列表模擬堆棧和隊列功能,簡單描述了隊列與堆棧的特點(diǎn),并結(jié)合列表相關(guān)函數(shù)分析了隊列的出隊、進(jìn)隊及堆棧的出棧、入棧等操作實現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01
  • python 留一交叉驗證的實例

    python 留一交叉驗證的實例

    這篇文章主要介紹了python 留一交叉驗證的實例代碼,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • pytorch之關(guān)于PyTorch結(jié)構(gòu)介紹

    pytorch之關(guān)于PyTorch結(jié)構(gòu)介紹

    這篇文章主要介紹了pytorch之關(guān)于PyTorch結(jié)構(gòu)的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • Python容器類型公共方法總結(jié)

    Python容器類型公共方法總結(jié)

    這篇文章主要總結(jié)了Python容器類型公共方法,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-08-08
  • Window 64位下python3.6.2環(huán)境搭建圖文教程

    Window 64位下python3.6.2環(huán)境搭建圖文教程

    這篇文章主要為大家詳細(xì)介紹了Window 64位下python3.6.2環(huán)境搭建圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • Python實現(xiàn)字符串模糊匹配的兩種實現(xiàn)方法

    Python實現(xiàn)字符串模糊匹配的兩種實現(xiàn)方法

    本文主要介紹了Python實現(xiàn)字符串模糊匹配的兩種實現(xiàn)方法,Python中通過re.search()方法實現(xiàn),對于首位起始的內(nèi)容匹配,也可通過re.match()方法實現(xiàn),感興趣的可以了解一下
    2023-11-11
  • 基于Python實現(xiàn)倒計時工具

    基于Python實現(xiàn)倒計時工具

    這篇文章主要為大家詳細(xì)介紹了基于Python實現(xiàn)倒計時工具,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論