單鏈表相交分為三種情況。
//單鏈表相交1
node* iscross_nocycle(list list1, list list2)
else
while (gap--)
//一起走
//不同的入口點的情況
//判斷條件:從meetnode1開始遍歷鍊錶,如果找到和meetnode2相等的節點,則證明共用環
//如果相交,返回任意乙個入口點
cur1 = meetnode1->next;
while (cur1 != meetnode1 && cur1 != meetnode2)
if (cur1 == meetnode2)
return entry1;
return null;//不相交
}
test
int main()
單鏈表判斷是否相交
判斷單鏈表是否有環路可以參考 單鏈表判斷環路及環路的入口 typedef int datatype 節點中資料型別 typedef struct listnode 節點資料結構 listnode typedef struct checknoode checknoode 判斷是否相交 bool che...
判斷單鏈表是否相交
二個單鏈表相交只能是y,不能是x,因為單鏈表每個節點只有乙個指標 問題描述 乙個比較經典的問題,判斷兩個鍊錶是否相交,如果相交找出他們的交點。思路 1 碰到這個問題,第一印象是採用hash來判斷,將兩個鍊錶的節點進行hash,然後判斷出節點,這種想法當然是可以的。2 當然採用暴力的方法也是可以的,遍...
判斷兩個單鏈表是否相交
首先要搞清楚單鏈表相交的概念和特點 指的是他們存在完全重合的部分,不是交叉到乙個點 不存在這種情況,可以想想為什麼 判斷其是否相交的方法有以下幾種。1 最傳統方法 雙重迴圈,依次查詢,是否有位址相同的節點,時間複雜度o list1.len list2.len 空間複雜度o 1 2 hash法 先遍歷...