//定義鍊錶節點
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,判斷這兩個列表是否相關。注,這裡只討論這兩個列表均不帶環的情況。解法一 直觀的想法 估計有些人一看到這個題目,便不管三七二十一,從第乙個鍊錶開始遍歷,判斷它的每乙個節點是否...