您好,登錄后才能下訂單哦!
本文小編為大家詳細(xì)介紹“python怎么判斷鏈表是否有環(huán)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“python怎么判斷鏈表是否有環(huán)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
在判斷是否有環(huán)前,需要先知道什么是鏈表中的環(huán)?
如下所示的鏈表有5個(gè)節(jié)點(diǎn)組成,框內(nèi)的數(shù)字代表編號(hào),也可理解為節(jié)點(diǎn)的地址。注意區(qū)分地址值和鏈表的數(shù)據(jù)域是完全不同的:
節(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):
如果像下面這樣遍歷一個(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>
通過(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è)資訊頻道。
免責(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)容。