給出倆個單向鍊錶的頭指標,比如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...