本文小編為大家詳細介紹“python怎么判斷鏈表是否有環(huán)”,內(nèi)容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“python怎么判斷鏈表是否有環(huán)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
站在用戶的角度思考問題,與客戶深入溝通,找到青原網(wǎng)站設(shè)計與青原網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋青原地區(qū)。
在判斷是否有環(huán)前,需要先知道什么是鏈表中的環(huán)?
如下所示的鏈表有5個節(jié)點組成,框內(nèi)的數(shù)字代表編號,也可理解為節(jié)點的地址。注意區(qū)分地址值和鏈表的數(shù)據(jù)域是完全不同的:
節(jié)點0指向節(jié)點3,而節(jié)點10又指向節(jié)點3,所以節(jié)點3就是環(huán)的入口,形成如下所示的一個環(huán):
如果像下面這樣遍歷一個有環(huán)鏈表:
# head 是鏈表的頭
while head:
print(head.data)
head = head.next
程序?qū)M入死循環(huán),會在環(huán)內(nèi)無窮的跑下去。
所以,研究如何判斷鏈表是否有環(huán),是一個非常有意義的課題,也是面試中常考的。
通過哈希的方法,代碼比較好理解:
class Solution(object):
def hasCycle(self, head):
s = set()
tmp = head
while tmp:
if tmp in s:
return True
s.add(tmp)
tmp = tmp.next
return False
讀到這里,這篇“python怎么判斷鏈表是否有環(huán)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領(lǐng)會,如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。