微軟100題(62)找出鍊錶的第乙個公共結點

2021-07-03 01:31:59 字數 496 閱讀 5286

題目:兩個單向鍊錶,找出它們的第乙個公共結點。

鍊錶的結點定義為:

struct listnode ;

思路:如果有公共結點,那麼從公共結點之後都是一樣的,假設乙個長m,乙個長n,那麼這兩個之間的差值之前的結點不可能是公共的,所以長的乙個先走差值,然後兩個一起走 判斷

int getlistlength(listnode* head)

return len;

}listnode* findthefirstcommon(listnode* phead1,listnode* phead2)

for (int i=0;im_pnext;

while (plonglist!=null && pshortlist!=null && plonglist != pshortlist)

listnode* common = plonglist;

return common;

}

二叉搜尋樹與雙向鍊錶 微軟面試100題 第一題

題目要求 輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。要求不能建立任何新的結點,只能調整樹中結點指標的指向。解決思路 1.根據觀察可知,雙向鍊錶順序即為二叉樹的中序遍歷結果 採用中序遍歷 遞迴 2.中序遍歷順序為 左 中 右,傳入乙個變數pre。pre可以這樣理解 當前結點的pre就...

微軟100題 第一題(查詢樹轉換為有序雙向鍊錶)

複習一下基礎,就把前序,中序,後序的非遞迴重新寫一遍,再把本題的遞迴和非遞迴解法也寫一下。個人覺得三種非遞迴遍歷方式中,如果記住左節點訪問到底,然後移動一次右節點,再遍歷左節點,應當還算比較清楚的。test microsoft q1.cpp 定義控制台應用程式的入口點。非遞迴前中後遍歷 中序轉化鍊錶...

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

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