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

2021-06-18 10:20:50 字數 1184 閱讀 4138

給出倆個單向鍊錶的頭指標,比如h1,h2,判斷這倆個鍊錶是否相交。

為了簡化問題,我們假設倆個鍊錶均不帶環。

問題擴充套件:

1.如果鍊錶可能有環列?

2.如果需要求出倆個鍊錶相交的第乙個節點列?

handwriting:

****** question:

bool ******intersect(node *h1, node *h2)
question 1:

bool loop (node *a, node * &s) 

s = fast;

return true;

} }return false;

}bool intersect(node *h1, node *h2)

1、記錯找環起點的方法

具體看:

慢指標走過的路程s1 = 非環部分長度 + 弧長

快指標走過的路程s2 = 非環部分長度 + n*環長 + 弧長

s1 *2 = s2, 可得非環部分長度 = n*環長 - 弧長

while (fast != slow)

question 2:

node *intersect(node *a, node *b) 

while (b->next != 0)

if (al > bl) else

while (a->next != 0 &&b->next != 0)

return 0;

}

answer from:

struct node ;

// if there is no cycle.

int isjoined******(node * h1, node * h2)

while (h2->next != null)

return h1 == h2;

}// if there could exist cycle

int isjoined(node *h1, node * h2)

}node* testcylic(node * h1)

} return null;

}

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

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

判斷倆個鍊錶是否相交

程式設計之美 上的一道微軟亞院題,判斷兩個兩個鍊錶是否相交,難度係數低。描述如下 給出倆個單向鍊錶的頭指標,比如h1,h2,判斷這倆個鍊錶是否相交。為了簡化問題,我們假設倆個鍊錶均不帶環。問題擴充套件 1.如果鍊錶可能有環列?2.如果需要求出倆個鍊錶相交的第乙個節點列?邏輯分析 1 先考慮不帶環的鍊...

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

題目 給出兩個單鏈表的頭指標h1 h2,判斷兩個鍊錶是否相交 思路 1.如果兩個鍊錶都沒有環 如果相交 則尾結點一定一樣 如果不相交,尾結點不一樣 2.乙個有環,乙個無環,則一定不相交 3.兩個都有環,如果相交,則環為同乙個環 如果不相交,則環不一樣 首先需要判斷是否有環 struct listno...