2.3 鏈表(二)

怎么寫好鏈表代碼

  1. 理解指針或引用的含義
    指針存儲了指定變量的內(nèi)存地址,通過指針就能找到這個變量
    p -> next = q代表p節(jié)點的next指針中存儲了q節(jié)點的內(nèi)存地址
    常用的還有p->next=p->next->next 直接把p的next指針指向p節(jié)點的下下一個加點的內(nèi)存

  2. 警惕指針丟失和內(nèi)存泄露
    插入節(jié)點時一定要注意操作順序,在a、b節(jié)點中插入c節(jié)點時,必須先把c的next指向b,再把a的next指向c。
    同時刪除鏈表節(jié)點時也記得手動釋放內(nèi)存空間。

  3. 利用哨兵簡化實現(xiàn)難度
    無論插入鏈表的第一個節(jié)點還是刪除鏈表的最后一個節(jié)點,我們都需要特殊處理,為了避免和簡化操作,引入了哨兵概念。它不參與業(yè)務(wù)邏輯,只解決邊界問題。
    如果鏈表中存在哨兵節(jié)點,它會被稱作帶頭鏈表,相反,沒有哨兵節(jié)點的鏈表被叫做不帶頭鏈表。

    image.png

  4. 重點留意邊界

    • 如果鏈表為空,代碼是否正常?
    • 如果鏈表只有一個節(jié)點,代碼是否正常?
    • 如果鏈表只有兩個節(jié)點時,代碼是否正常?
    • 代碼處理頭結(jié)點和尾結(jié)點時,是否正常?
  5. 舉例畫圖,輔助思考
    在寫的同時在草稿上列出具體內(nèi)容或者畫出相關(guān)的節(jié)點增減,這能有效幫助構(gòu)筑具體的操作步驟

  6. 多寫多練,沒有捷徑
    多寫,熟練以下內(nèi)容

    • 單鏈表反轉(zhuǎn) 206
    • 鏈表中環(huán)的檢測 141
    • 兩個有序的鏈表合并 21
    • 刪除鏈表倒數(shù)第 n 個結(jié)點 19
    • 求鏈表的中間結(jié)點 876

此文章為2月Day4學(xué)習(xí)筆記,內(nèi)容來源與極客時間《數(shù)據(jù)結(jié)構(gòu)與算法之美》

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

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

  • 鏈表(下):如何輕松寫出正確的鏈表代碼? 上一節(jié)我講了鏈表相關(guān)的基礎(chǔ)知識。學(xué)完之后,我看到有人留言說,基礎(chǔ)知識我都...
    GhostintheCode閱讀 1,343評論 2 3
  • 線性表 定義:線性表就是數(shù)據(jù)排成像一條線一樣的結(jié)構(gòu)。每個線性表上的數(shù)據(jù)最多只有前和后兩個方向。其實除了數(shù)組,鏈表、...
    竹blue閱讀 412評論 0 0
  • 本講內(nèi)容 鏈表定義和分類鏈表和數(shù)組比較鏈表操作寫鏈表代碼的技巧簡單算法題 鏈表定義和分類 定義:通過指針把零散的內(nèi)...
    鄭小鹿閱讀 241評論 0 1
  • 概念 鏈表的插入,只需要上一個節(jié)點的指針指向這個新增的節(jié)點,新增的節(jié)點指向下一個節(jié)點。刪除類似操作。 鏈表當前節(jié)點...
    回憶只能等候閱讀 535評論 0 0
  • 1. 定義 鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。...
    逍遙白亦閱讀 446評論 0 1

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