如何判斷兩個單向鍊錶是否有相交,並找出交點

2022-05-02 10:36:13 字數 692 閱讀 2814

**:

深信服一道筆試:如何判斷兩個單向鍊錶是否有相交,並找出交點。

題比較簡單,單向鍊錶有交點意思就是交點後的節點都是一樣的了。

node* findnode(node* phead1, node* phead2)

while

(p1-

>next !

=null

)while

(p2-

>next !

=null)if

(p1 !

= p2)

else

while

(p1 !

= p2)

return p1;

}else

while

(p1 !

= p2)

return p1;}}

}

1,在第一次遍歷完煉表後,進行第二次遍歷,需要把指標再次初始化;看見網上一些人給的例子沒有再次初始化顯然是錯誤的;再呼叫null的next不死才怪!

2,小優化。迴圈和判斷,把判斷放在外面;如果把i和j大小判斷放在裡面的話就意味著迴圈多少次,判斷就執行多少次;當然這樣做的唯一不足就是**

多了點;還有for迴圈之前的對f的賦值,有的為了簡便直接放在for語句裡面,不過同樣道理,放在for迴圈裡面,就執行了n次的fabs;拿出來賦

值,只賦值一次就ok。

判斷兩個單向鍊錶是否相交

鍊錶分為有環和無環,如果兩個鍊錶存在相交,則只有兩種可能,兩個鍊錶都無環或者都有環。下面分別討論。2.1定義鍊錶 單向鍊錶 public static class linknode 2.2判斷是否有環 判斷是否有環,有環返回入口點,無環返回null。public static linknode is...

判斷兩個單向鍊錶是否相交

給定兩個 單向 鍊錶,判定它們是否相交並返回交點。請注意相交的定義基於節點的引用,而不是基於節點的值。換句話說,如果乙個鍊錶的第k個節點與另乙個鍊錶的第j個節點是同一節點 引用完全相同 則這兩個鍊錶相交。首先最容易想到暴力搜尋,對a鏈的每乙個節點,都對b鍊錶進行遍歷搜尋看是否相同 public li...

六 判斷兩個單向鍊錶是否相交

判斷兩個單向鍊錶是否相交,有兩種情況,一種是兩個不帶環的單向鍊錶相交,一種是兩個帶環的單向鍊錶相交。情況1 兩個不帶環的單向鍊錶相交 判斷兩個不帶環的單向鍊錶是否相交。時間複雜度o n 空間複雜度o 1 思路 如果兩個沒有環的鍊錶相交於某一節點,那麼在這個節點之後的 所有節點都是兩個鍊錶共有的,如果...