1. 程式人生 > >【牛客演算法筆試面試精講筆記】連結串列問題

【牛客演算法筆試面試精講筆記】連結串列問題

連結串列問題是常考知識點之一,在筆試面試題中在演算法上不會有太大難度,主要注意以下幾點:

1、指標涉及很多操作,容易考慮不周,著重考察面試者程式碼實現能力和不出錯能力。。

2、連結串列和陣列都是線性結構,陣列是實體地址連續的一段儲存空間,可以通過訪問陣列下標獲得元素。而連結串列和陣列最大的區別在於,連結串列的儲存空間是臨時分配的,單鏈表只能通過next指標獲得下一個結點的位置,要想找到第i個元素,只能從頭部一個個走下去。

連結串列的分類:

1、按照連線方向分類:單鏈表(只能通過next指標指向下一個節點),雙鏈表(有previous 指標指向上一個節點)

2、按照有環無環分類:普通連結串列、迴圈連結串列(尾節點的next 指標指向頭節點)

對於迴圈雙鏈表來說,尾節點的next 指標指向頭節點,頭節點的previous指標指向尾節點。

連結串列問題程式碼實現的關鍵點:

1、連結串列調整函式的返回值型別,根據要求往往是節點型別(一般為頭結點)

2、處理連結串列過程中,注意思考指標變化,先採用畫圖的方式理清邏輯,調整前後節點記得儲存環境,不要讓連結串列斷線。

3、連結串列問題對於邊界條件的討論要求嚴格。

頭節點、尾節點、空節點的情況都要注意,不要總假設指標有意義,要時刻判斷節點是否為空。

關於連結串列插入和刪除的注意事項:

1、特殊處理連結串列為空或者連結串列長度為1的情況

2、注意插入、刪除操作的調整過程。刪除頭尾節點和空節點需要特殊考慮

雙鏈表的插入與刪除和單鏈表類似,但是需要額外考慮previous指標的指向。