溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python怎么判斷鏈表是否有環(huán)

發(fā)布時(shí)間:2022-05-09 14:09:44 來(lái)源:億速云 閱讀:156 作者:iii 欄目:大數(shù)據(jù)

本文小編為大家詳細(xì)介紹“python怎么判斷鏈表是否有環(huán)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“python怎么判斷鏈表是否有環(huán)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

1 鏈表有環(huán)是什么意思?

在判斷是否有環(huán)前,需要先知道什么是鏈表中的環(huán)?

如下所示的鏈表有5個(gè)節(jié)點(diǎn)組成,框內(nèi)的數(shù)字代表編號(hào),也可理解為節(jié)點(diǎn)的地址。注意區(qū)分地址值和鏈表的數(shù)據(jù)域是完全不同的:

python怎么判斷鏈表是否有環(huán)  

節(jié)點(diǎn)0指向節(jié)點(diǎn)3,而節(jié)點(diǎn)10又指向節(jié)點(diǎn)3,所以節(jié)點(diǎn)3就是環(huán)的入口,形成如下所示的一個(gè)環(huán):

python怎么判斷鏈表是否有環(huán)  

如果像下面這樣遍歷一個(gè)有環(huán)鏈表:

# head 是鏈表的頭
while head:
    print(head.data)
    head = head.next

程序?qū)?huì)進(jìn)入死循環(huán),會(huì)在環(huán)內(nèi)無(wú)窮的跑下去。

所以,研究如何判斷鏈表是否有環(huán),是一個(gè)非常有意義的課題,也是面試中??嫉摹?/p>

2 如何判斷鏈表是否有環(huán)

通過(guò)哈希的方法,代碼比較好理解:

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)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI