鍊錶相交及求其交點

2021-10-18 04:36:31 字數 604 閱讀 7223

題目:

判斷兩個鍊錶是否相交, 如果相交, 計算交點

void

find_two_list_intersection

(pstu head1, pstu head2)

while

(tail2)

if(pcur1 == pcur2)

//若尾指標相同則相交

pstu p1 = len1 > len2 ? head1 : head2;

//p1指向較短鍊錶的頭節點

while

(p != p1)

//p和p1同時前進,相同則為兩鍊錶的交點

printf

("the intersection is:%d\n"

, p1->num);}

else

}

也可使鍊錶尾結點指向某一煉表頭節點,判斷另一條鍊錶是否有環

void

isloope

(pstu head)

}printf

("there isn't a loope");

}

鍊錶相交及交點求解

對於鍊錶相交要分幾種情況 1 兩無環單鏈表相交 2 一無環與一有環鏈表不可能相交 3 兩有環鏈表相交 plinknode loop point plinklist plist1,plinklist plist2 有環 else return p1 return p2 以下 為判斷鍊錶是否帶環 int...

鍊錶相交問題

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

鍊錶相交問題

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