關於單鏈表的幾個有意思的問題

2021-05-22 09:55:16 字數 674 閱讀 5638

q1:已知指向單鏈表的header指標,如何判斷該單鏈表是否存在環?

q2:已知兩個單鏈表,它們可能存在重疊的部分,也就是y字形鍊錶,如何判斷這兩個鍊錶是否存在y字形?

q3:已知指向單鏈表的header指標,如何高效的輸出單鏈表的倒數第n個節點?(最後乙個節點為倒數第0個節點)

q4:不知道單鏈表的header指標,僅僅知道指向某節點的指標p,如何在鍊錶中刪除該節點?

答案在後面

q1:已知指向單鏈表的header指標,如何判斷該單鏈表是否存在環

a1:兩個指標開始都指向鍊錶的頭,乙個每次向後移動兩個節點,乙個移動乙個節點,如果移動快的節點又追上慢的節點,則存在環;如果移動慢的移動到了鍊錶尾,則不存在環。

q2:已知兩個單鏈表,它們可能存在重疊的部分,也就是y字形鍊錶,如何判斷這兩個鍊錶是否存在y字形?

a2:如果存在重疊部分,那麼兩個鍊錶的尾節點也重疊,即指向兩個鍊錶的尾節點的指標相同。

q3:已知指向單鏈表的header指標,如何高效的輸出單鏈表的倒數第n個節點?(最後乙個節點為倒數第0個節點)

a3:**如下,設定兩個指標,最終它們的偏移量為n+1即可。

q4:不知道單鏈表的header指標,僅僅知道指向某節點的指標p,如何在鍊錶中刪除該節點?

a4:不能用常規方法實現。需要將p節點下乙個節點的值賦給p節點,然後刪除p節點的下乙個節點。

JDK HashMap幾個有意思的問題

hashmap的hash演算法 hash原始碼如下 做了什麼?為啥這麼做?hash碰撞怎麼做 hash衝突 鍊錶 紅黑樹 如果元素的key的hash值相同,則使用乙個鍊錶來存放。鍊錶查詢乙個元素的時間複雜度為 o n 鍊錶到達一定長度 8 則使用紅黑樹,紅黑樹尋找乙個元素的時間的時間複雜度為o lo...

幾個比較有意思的邏輯問題

誠實者與說謊者的問題 現有a和b兩扇門,其中有乙個是我要開啟的,即正確的門,有乙個是錯誤的門,有兩個守門員a和b,他們兩都知道正確的門和錯誤的門,他們會告訴你答案但是它他們有乙個是誠實的,有乙個是說謊的。現要求,只能問他們其中乙個人乙個問題,怎麼才能開啟正確的門。海盜分金問題 5個海盜 abcde ...

關於單鏈表的幾個問題

q 如何判斷乙個單鏈表是否有環,如果有環,找出環的入口點?a 首先我們判斷鍊錶是否有環,設定兩個指標slow和fast,指向單鏈表的頭部,每個迴圈slow走一步,fast走兩步。如果沒有環,fast或者fast的next會走到null,否則fast在環裡迴圈最終會和slow相遇,此時即存在環。再看第...