【算法打卡60天】Day5鏈表(下):如何輕松寫出正確的鏈表代碼?

打卡Day5
今天學(xué)習(xí)了第一階段的鏈表(下):如何輕松寫出正確的鏈表代碼?
今日收獲:幾個(gè)寫鏈表的代碼技巧
技巧一:理解指針或引用的含義

對指針的理解:將某個(gè)變量賦值給指針,實(shí)際上就是將這個(gè)變量的地址賦值給指針,或者反過來說,指針中存儲(chǔ)了這個(gè)變量的內(nèi)存地址,指向了這個(gè)變量,通過指針就能找到這個(gè)變量。

技巧二:警惕指針丟失和內(nèi)存泄漏

技巧三:利用哨兵簡化實(shí)現(xiàn)難度
1.什么是“哨兵”?
鏈表中的“哨兵”節(jié)點(diǎn)是解決邊界問題的,不參與業(yè)務(wù)邏輯。如果我們引入“哨兵”節(jié)點(diǎn),則不管鏈表是否為空,head指針都會(huì)指向這個(gè)“哨兵”節(jié)點(diǎn)。我們把這種有“哨兵”節(jié)點(diǎn)的鏈表稱為帶頭鏈表,相反,沒有“哨兵”節(jié)點(diǎn)的鏈表就稱為不帶頭鏈表。

技巧四:重點(diǎn)留意邊界條件處理
經(jīng)常用來檢查鏈表是否正確的邊界4個(gè)邊界條件:
1.如果鏈表為空時(shí),代碼是否能正常工作?
2.如果鏈表只包含一個(gè)節(jié)點(diǎn)時(shí),代碼是否能正常工作?
3.如果鏈表只包含兩個(gè)節(jié)點(diǎn)時(shí),代碼是否能正常工作?
4.代碼邏輯在處理頭尾節(jié)點(diǎn)時(shí)是否能正常工作?
技巧五:舉例畫圖,輔助思考

技巧六:多寫多練,沒有捷徑
5 個(gè)常見的鏈表操
1.單鏈表反轉(zhuǎn)
2.鏈表中環(huán)的檢測
3.兩個(gè)有序鏈表合并
4.刪除鏈表倒數(shù)第n個(gè)節(jié)點(diǎn)
5.求鏈表的中間節(jié)點(diǎn)

以上5個(gè)鏈表操作,盡快自己寫一遍,一遍不行,多寫幾遍,徹底掌握鏈表。
本文參考【極客時(shí)間】專欄《數(shù)據(jù)結(jié)構(gòu)與算法之美》

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容