鍊錶相關面試題

2021-05-27 20:02:11 字數 933 閱讀 9958

原文及參***:

題一、 給定單鏈表,檢測是否有環。

擴充套件: 怎麼快速檢測出乙個巨大的鍊錶中的死鏈?或者如何找出乙個單鏈表的中間節點?

題二、 給定兩個單鏈表(head1,head2),檢測兩個鍊錶是否有交點,如果有返回第乙個交點。

題三、 給定單鏈表(head),如果有環的話請返回從頭結點進入環的第乙個節點。

要點: 如果兩個鍊錶相交,那個兩個鍊錶從相交點到鍊錶結束都是相同的節點

另解:

四、只給定單鏈表中某個結點p(並非最後乙個結點,即p->next!=null)指標,刪除該結點。

題五、只給定單鏈表中某個結點p(非空結點),在p前面插入乙個結點。

題六、給定單鏈表頭結點,刪除鍊錶中倒數第k個結點。

補充:

七、逆序輸出無環單鏈表的所有節點值

詳見 :

擴充套件:該題還有兩個常見的變體:

1. 從尾到頭輸出乙個字串;

2. 定義乙個函式求字串的長度,要求該函式體內不能宣告任何變數。

八、無環單鏈表逆序

/* 無環單鏈表逆序 */

node* reverselist2(node* head)

else

preversedhead = cursor;

cursor = next;

}return preversedhead;

}

九、無環單鏈表合併[微軟]

已知單鏈線性表la和lb的元素按值非遞減排列.歸併la和lb得到新的單鏈線性表lc,lc的元素也按值非遞減排列.

參考:

各種面試題 鍊錶相關

1.判斷是否有環 bool existcircle listnode head return false 2.找環的起始位置 這個在紙上畫個環就能看出相遇的地方到起始位置與表頭到起始位置的距離是相等的。所以相遇後把乙個放到頭去再相遇就好了。listnode findcirclestart listn...

鍊錶相關面試題(基礎篇)

鍊錶相關面試題 基礎篇 鍊錶是一種常見的基礎資料結構,是一種線性表,是一種物理儲存單元上非連續 非順序的儲存結構。鍊錶由一系列節點組成,節點可以在執行時動態生成。每個節點包括儲存資料元素的資料域和儲存下乙個節點位址的指標域兩個部分。相比於線性表順序結構,操作複雜。資料元素的邏輯順序也是通過鍊錶中的指...

鍊錶相關的熱點面試題(一)

先把相關的題目給出來 1.從尾到頭列印單鏈表 2.刪除乙個無頭單鏈表的非尾節點 3.在無頭單鏈表的乙個非頭節點前插入乙個節點 4.逆置 反轉單鏈表 5.單鏈表排序 6.合併兩個有序鍊錶,合併後依然有序 7.查詢單鏈表的中間節點,要求只能遍歷一次鍊錶 先把單鏈表結構給出來 templatet stru...