判斷兩條鍊錶 不帶環 是否相交,如果相交,求出交點

2021-09-27 15:37:09 字數 778 閱讀 2963

//定義鍊錶節點

typedef

struct listnode

node;

判斷兩個鍊錶(鍊錶不帶環)有沒有相交?

思路:如果兩個鍊錶相交,那麼最後乙個節點肯定是相同的

因此判斷兩個鍊錶的最後乙個節點是不是相同的就可以了

bool isintersect

(node* first1, node* first2)

while

(first2->next != nullptr)

if(first1 == first2)

return true;

return false;

}找到兩個相交鍊錶的第乙個交點

思路:設定兩個指標,比較兩個鍊錶的長度,求出差值,讓長鍊錶指標先行差值步,

之後長短指標同時向後移動。當長短指標指向的節點是同乙個節點的時候,

這個節點就是第乙個交點。

node*

findintersectnode

(node* first1, node* first2)

for(node* p2 = first2; p2; p2 = p2->next)

int count =0;

if(len1 > len2)

while

(first1 != first2)

}else

while

(first1 != first2)

}return first1;

}

判斷兩個不帶環鍊錶是否相交?若相交,求入口點。

通常情況下,不帶環的兩個鍊錶相交如上圖所示。方法一 1 先判斷鍊錶是否相交 若相交,那麼兩個鍊錶的尾節點必然相同。則可以遍歷兩個鍊錶,判斷其尾節點。若不相交,則尾節點必然不相同。2 若相交,求其入口點 通過遍歷兩個鍊錶可以得到其長度 假設為len1和len2 通過比較len len abs len1...

判斷兩條鍊錶是否相交 單鏈表是否有環

相交的話,一定是y型或者v型的。所以只需要判斷兩個鍊錶最後乙個節點就可以了。問題描述 給定兩個單向列表的頭指標,比如h1 h2,判斷這兩個列表是否相關。注,這裡只討論這兩個列表均不帶環的情況。解法一 直觀的想法 估計有些人一看到這個題目,便不管三七二十一,從第乙個鍊錶開始遍歷,判斷它的每乙個節點是否...

判斷兩條鍊錶是否相交 單鏈表是否有環

相交的話,一定是y型或者v型的。所以只需要判斷兩個鍊錶最後乙個節點就可以了。問題描述 給定兩個單向列表的頭指標,比如h1 h2,判斷這兩個列表是否相關。注,這裡只討論這兩個列表均不帶環的情況。解法一 直觀的想法 估計有些人一看到這個題目,便不管三七二十一,從第乙個鍊錶開始遍歷,判斷它的每乙個節點是否...