今天讓我們來做一些複雜一些的鏈表面試題。
1.複雜鍊錶的復刻。
typedef struct cn cn;
cn *copy(cn *pfirst)
//2.複製prandom。
for(pnode=pfirst;pnode!=null;pnode=pnode->pnext->pnext) }
//3.拆鍊錶。
for(pnode=pfirst;pnode!=null;pnode=pnode->pnext)
else
} return pnewfirst;
}cn *buy(int data) //建立複雜鍊錶。
void print(cn *pfirst) //列印各個節點的資料。
printf("\n");
}void test() //測試程式。
2.//判斷兩個鍊錶是否相交,若相交,求交點。
slistnode *jiao(slistnode *a1,slistnode *a2)
while(n2->pnext!=null)
if(n1!=n2) //如果兩個尾結點不同,證明兩個鍊錶不相交。
else
n1=n1->pnext;
}} else if(xpnext;
}while(n1->pnext!=null)
n1=n1->pnext;
}} else if(x>z) //當第二個大時如上操作即可。
while(n2->pnext!=null)
n2=n2->pnext;
}} }
}
這兩個題挺複雜的,需要好好琢磨才能掌握。
和鍊錶有關面試題
面試中被問鍊錶的題目我就不再多說,直接總結題目。1 將鍊錶逆序 這個問題很早就研究過,但後來一次面試的時候我突然緊張忘了,沒答上來。我不知道大家的解法是什麼,我的解法是遍歷鍊錶是用前插發插入節點,最後的鍊錶就是逆序的。python view plain copy class listnode def...
有關鍊錶的經典面試題 (一)
1.比較順序表和煉表的優缺點,說說它們分別在什麼場景下使用?順序表 記憶體中位址連續,優點是隨機訪問比較便捷快速,建立也比較簡單,隨機查詢比較方便,可以直接給出下標,排序也方便 簡單。缺點 不夠靈活,刪除增加的工作量叫大,比較麻煩,長度不能實時變化 適用場景 適用於需要大量訪問元素的 而少量增添 刪...
有關鍊錶的經典面試題(二)
1.判斷單鏈表是否帶環?若帶環,求環的長度?求環的入口點?並計算每個演算法的時間複雜度 空間複雜度。思路 利用快慢指標,快指標一次走兩步,慢指標一次走一步,如快慢指標有相遇點,則一定有環。找到相遇點後,求環長度問題,可以轉換為求頭結點到 相遇點之間的長度問題。求入口點時,讓快指標回到頭結點,兩指標再...