微軟100題(7) 判斷兩鍊錶是否相交

2021-07-02 18:46:52 字數 738 閱讀 7006

題目:

給出兩個單鏈表的頭指標h1 h2,判斷兩個鍊錶是否相交

思路:1.如果兩個鍊錶都沒有環:

如果相交:則尾結點一定一樣

如果不相交,尾結點不一樣

2.乙個有環,乙個無環,則一定不相交

3.兩個都有環,

如果相交,則環為同乙個環

如果不相交,則環不一樣

首先需要判斷是否有環

struct  listnode

listnode;

bool judgecircle(listnode* head)

return false;

}

然後,如果有環就需要找到環裡面的乙個結點,然後判斷這個結點在不在另乙個煉表裡

尋找乙個環裡的結點:

listnode* findonenode(listnode* head)//已經判斷出煉表有環

return null;

}

判斷該結點在不在另乙個有環的鍊錶裡面

bool i***istinlist(listnode* head2,listnode* pnode)

} if(pnode == ptemp) return true;

p1 = p1->m_pnext;

while(p1!=ptemp)

return false;

}

判斷兩鍊錶是否相交

1.判斷鍊錶帶不帶環 2.如果都不帶環,就判斷尾節點是否相等 3.如果都帶環,判斷一條鍊錶上兩指標相遇的那個節點,在不在另一條鍊錶上,如果在,則相交,如果不在,則不相交 那麼如何判斷是否帶環?設定兩個指標 p1 p2 開始都指向鍊錶的頭,p2 每次移動兩步 p1每次移動一步,如果存在環,則他們必在環...

7 微軟亞院之程式設計判斷倆個鍊錶是否相交(鍊錶)

今天看了july的一篇經典文章 程式設計師程式設計藝術 第九章 閒話鍊錶追趕問題 因為現在一直複習資料結構有關鍊錶的演算法,順便總結下,學習下july大牛的判斷鍊錶是否相交。出處 題目 給出兩個單向鍊錶的頭指標,判斷是否相交。下面是july文章上面的解法 分析 這是來自程式設計之美上的微軟亞院的一道...

第12題 判斷兩個鍊錶是否相交

題目 判斷兩個鍊錶是否相交 分析 如果被問道此問題,一定要分兩種情況回答,第一種是鍊錶不存在環,第二種就是存在環的情況 1.先判斷帶不帶環 2.如果都不帶環,就判斷尾節點是否相等 3.如果都帶環,判斷一煉表上倆指標相遇的那個節點,在不在另一條鍊錶,如果在,則相交,如果不在,則不相交 struct n...