最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python判斷單向鏈表是否包括環(huán),若包含則計算環(huán)入口的節(jié)點實例分析

 更新時間:2019年10月23日 11:48:50   作者:鯨落丶  
這篇文章主要介紹了python判斷單向鏈表是否包括環(huán),若包含則計算環(huán)入口的節(jié)點,結合實例形式分析了Python針對單向鏈表的遍歷、判斷相關算法原理與使用技巧,需要的朋友可以參考下

本文實例講述了python判斷單向鏈表是否包括環(huán),若包含則計算環(huán)入口的節(jié)點。分享給大家供大家參考,具體如下:

關于數據結構相關的面試題,經常會問到鏈表中是否存在環(huán)結構的判斷,下圖就是存在環(huán)結構的鏈表。

那么如何判斷鏈表中是否存在環(huán)呢,下面解法的思路是采用快慢指針:

兩個指向頭節(jié)點的指針,fast和slow,一起從頭結點開始往后遍歷,fast每次移動兩個節(jié)點,slow每次移動一個節(jié)點,

這樣,如果存在環(huán)結構,那么fast指針在不斷繞環(huán)過程中,肯定會追上slow指針。

# -*- coding:utf-8 -*-
'''
Created on 2019年10月23日
@author: Administrator
'''
class Node(): #定義一個Node類,構造兩個屬性,一個是item節(jié)點值,一個是節(jié)點的下一個指向
  def __init__(self,item=None):
    self.item = item
    self.next = None
def findbeginofloop(head):#判斷是否為環(huán)結構并且查找環(huán)結構的入口節(jié)點
  slowPtr = head     #將頭節(jié)點賦予slowPtr
  fastPtr = head     #將頭節(jié)點賦予fastPtr
  loopExist =False    #默認環(huán)不存在,為False
  if head == None:    #如果頭節(jié)點就是空的,那肯定就不存在環(huán)結構
    return False
  while fastPtr.next != None and fastPtr.next.next != None:   #fastPtr的下一個節(jié)點和下下個節(jié)點都不為空
    slowPtr = slowPtr.next      #slowPtr每次移動一個節(jié)點
    fastPtr = fastPtr.next.next   #fastPtr每次移動兩個節(jié)點 
    if slowPtr == fastPtr :     #當fastPtr和slowPtr的節(jié)點相同時,也就是兩個指針相遇了
      loopExist = True
      print("存在環(huán)結構")
      break
  if loopExist == True:
    slowPtr = head
    while slowPtr != fastPtr:
      fastPtr = fastPtr.next
      slowPtr = slowPtr.next
    return slowPtr
  print("不是環(huán)結構")
  return False
if __name__ == "__main__":
  node1 = Node(1)
  node2 = Node(2)
  node3 = Node(3)
  node4 = Node(4)
  node5 = Node(5)
  node1.next = node2
  node2.next = node3
  node3.next = node4
  node4.next = node5
  node5.next = node2
  print(findbeginofloop(node1).item)

運行結果:

存在環(huán)結構
2

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python數據結構與算法教程》、《Python加密解密算法與技巧總結》、《Python編碼操作技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程

希望本文所述對大家Python程序設計有所幫助。

相關文章

  • Python matplotlib 繪制雙Y軸曲線圖的示例代碼

    Python matplotlib 繪制雙Y軸曲線圖的示例代碼

    Matplotlib是非常強大的python畫圖工具,這篇文章主要介紹了Python matplotlib 繪制雙Y軸曲線圖,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-06-06
  • 使用python畫社交網絡圖實例代碼

    使用python畫社交網絡圖實例代碼

    這篇文章主要給大家介紹了關于如何使用python畫社交網絡圖的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-07-07
  • python?裝飾器(Decorators)原理說明及操作代碼

    python?裝飾器(Decorators)原理說明及操作代碼

    裝飾器(Decorators)是 Python 的一個重要部分,本文由淺入深給大家介紹了python?裝飾器Decorators原理,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • python實現(xiàn)兩張圖片的像素融合

    python實現(xiàn)兩張圖片的像素融合

    這篇文章主要為大家詳細介紹了python實現(xiàn)兩張圖片的像素融合,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • Python實現(xiàn)蟻群算法

    Python實現(xiàn)蟻群算法

    本文主要介紹了Python實現(xiàn)蟻群算法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 在Python程序中操作MySQL的基本方法

    在Python程序中操作MySQL的基本方法

    這篇文章主要介紹了再Python程序中操作MySQL的基本方法,主要借助了MYSQLdb module,需要的朋友可以參考下
    2015-07-07
  • 基于Python編寫簡單的網絡測試工具

    基于Python編寫簡單的網絡測試工具

    這篇文章主要為大家詳細介紹了如何基于Python編寫一個簡單的網絡測試工具,可以測試網絡的下載速度,上傳速度和延遲,感興趣的可以了解下
    2025-02-02
  • Matplotlib 折線圖plot()所有用法詳解

    Matplotlib 折線圖plot()所有用法詳解

    這篇文章主要介紹了Matplotlib 折線圖plot()所有用法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • 使用Python實現(xiàn)搖號系統(tǒng)的詳細步驟

    使用Python實現(xiàn)搖號系統(tǒng)的詳細步驟

    這篇文章主要介紹了如何使用Python構建一個簡單的搖號系統(tǒng),包括需求分析、技術棧、實現(xiàn)步驟和完整代碼示例,該系統(tǒng)能夠從用戶輸入的參與者名單中隨機抽取指定數量的中獎者,并將結果展示給用戶以及記錄到日志文件中,需要的朋友可以參考下
    2024-11-11
  • pycharm配置python 設置pip安裝源為豆瓣源

    pycharm配置python 設置pip安裝源為豆瓣源

    這篇文章主要介紹了pycharm配置python 設置pip安裝源為豆瓣源,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02

最新評論

邹城市| 玛沁县| 綦江县| 阜宁县| 繁峙县| 泸州市| 溧水县| 海淀区| 团风县| 绥中县| 隆安县| 伊吾县| 南陵县| 东丽区| 龙游县| 北宁市| 上杭县| 镇雄县| 阜康市| 大足县| 自贡市| 米脂县| 桐梓县| 宣威市| 当雄县| 阿拉尔市| 孝义市| 聂荣县| 延川县| 泰顺县| 鄂伦春自治旗| 安多县| 丽江市| 自贡市| 泊头市| 天柱县| 和静县| 东台市| 元氏县| 嵩明县| 保康县|