鍊錶相交及交點求解

2021-08-04 10:53:25 字數 1150 閱讀 3448

對於鍊錶相交要分幾種情況

1、兩無環單鏈表相交

2、一無環與一有環鏈表不可能相交

3、兩有環鏈表相交

plinknode loop_point(plinklist plist1, plinklist plist2)//有環

else

return p1;//return p2;

}

以下**為判斷鍊錶是否帶環

int noloop_cross(plinklist plist1, plinklist plist2)

//無環鏈表相交則最後一節點相同

while (cur2->next != null)

if (cur1 == cur2)

return 1; //相交

else

return 0;

}int loop_cross(plinklist plist1, plinklist plist2)

//有環鏈表相交則環內會有相同的節點

return 0;

}int link_cross(plinklist plist1, plinklist plist2)//合併以上兩個函式

plinknode tmp1=check_loop(plist1);//判斷是否帶環,有環返回快慢指標相遇點

plinknode tmp2 = check_loop(plist2);

if (tmp1&&tmp2)

else if (tmp1 == null&&tmp2 == null)

else

return 0;

}

鍊錶相交及求其交點

題目 判斷兩個鍊錶是否相交,如果相交,計算交點 void find two list intersection pstu head1,pstu head2 while tail2 if pcur1 pcur2 若尾指標相同則相交 pstu p1 len1 len2 head1 head2 p1指向較...

鍊錶相交問題

1 判斷兩個鍊錶是否相交 假設兩個鍊錶均不帶環 有四種方法 解法1 直觀的想法 判斷第乙個鍊錶的每個節點是否在第二個鍊錶中,這種方法的時間複雜度為o length h1 length h2 解法2 利用計數的方法 對第乙個鍊錶的節點位址進行hash排序,建立hash表,然後針對第二個鍊錶的每個節點的...

鍊錶相交問題

問題描述 給定兩鍊錶的頭結點,判斷兩鍊錶是否存在公共部分 相交 若相交返回相交的第乙個節點。經分析發現該問題可以分成如下兩個子問題進行解決。子問題一 兩無環鏈表是否相交 演算法一 假設list1長度為l1,list2長度為l2,假設公共部分長為m,由l1 l2 m l2 l1 m可知第一路先遍歷li...