**:
深信服一道筆試:如何判斷兩個單向鍊錶是否有相交,並找出交點。
題比較簡單,單向鍊錶有交點意思就是交點後的節點都是一樣的了。
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 思路 如果兩個沒有環的鍊錶相交於某一節點,那麼在這個節點之後的 所有節點都是兩個鍊錶共有的,如果...