鏈表的基本處理技巧

算法題中鏈表的操作主要是對鏈表結構的操作,實現難度不大,但是由於操作比較細膩,所以比較考察基本功。雖然算法成面不多,但是還是有一些基本處理技巧的。

注意事項:
時刻注意鏈表是否爲空(和數組越界一樣嚴重)
結構的操作,注意分析有沒有影響前後結點,該怎樣處理,這正是基本功所在。

技巧一:
設置dummy Node…
dummy Node 在幾乎90%的鏈表題中會用到,當鏈表的 head 有可能變化(被修改或者被刪除)時,使用 dummy node 可以很好的簡化代碼,最終返回 dummy.next 即新的鏈表。
但是用來遍歷的一般是prev結點,初始值爲dummy,用來進行遍歷操作,儲存當前結點的上一個結點的位置。
技巧二:
快速找出未知長度單鏈表的中間節點—- 找中點。
同向快慢指針,快指針走到鏈表的末尾,慢指針就走到中點位置,此時設置prev.next = null ,prev記錄的是slow指針上一步的位置,這樣就將鏈表切成了兩個獨立的子鏈表。
技巧三:
判斷環和找到環的位置。
同向快慢指針,如果快慢 指針相遇則說明有環,否則無環。。在有環的基礎上,一個指針從鏈表頭結點出發,另外慢指針從快慢指針相遇位置出發,兩個指針相遇的地方則爲環的入口。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章