链表 - 头节点的意义
生活随笔
收集整理的這篇文章主要介紹了
链表 - 头节点的意义
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
說明
- 初學(xué)數(shù)據(jù)結(jié)構(gòu)時(shí),對(duì)于在鏈表中額外定義一個(gè)空數(shù)據(jù)的頭結(jié)點(diǎn)不理解,不明白其優(yōu)劣,認(rèn)為可有可無,有時(shí)為了節(jié)省內(nèi)存空間而去掉該節(jié)點(diǎn),但是定義頭結(jié)點(diǎn)是有其意義和作用的。
- 頭結(jié)點(diǎn)示意圖:
缺點(diǎn)
- 多定義了一個(gè)結(jié)點(diǎn),多占用了一個(gè)結(jié)點(diǎn)的內(nèi)存。
- 改善方式:可以采用linux kernel中的list實(shí)現(xiàn)方式(結(jié)點(diǎn)中只包含結(jié)點(diǎn)指針不包含結(jié)點(diǎn)數(shù)據(jù)),減少頭節(jié)點(diǎn)的內(nèi)存占用。
優(yōu)點(diǎn)
- 單鏈表或雙鏈表刪除或插入節(jié)點(diǎn)時(shí),如果沒有頭結(jié)點(diǎn),處理有兩種情況:
- 如果有頭結(jié)點(diǎn),只存在一種情況:不是第一個(gè)結(jié)點(diǎn),因此按照上面第一種情況進(jìn)行處理就好了,這樣代碼更通用,處理更簡單高效。
- 以下是無頭節(jié)點(diǎn)單鏈表刪除節(jié)點(diǎn)的示例代碼:
- 以上代碼看起來有頭結(jié)點(diǎn)和沒頭結(jié)點(diǎn)的差別不大,但是實(shí)際更復(fù)雜情況下的處理會(huì)更復(fù)雜,會(huì)導(dǎo)致初學(xué)者理不清,加上頭結(jié)點(diǎn)能減輕一些復(fù)雜情況下的復(fù)雜度。
總結(jié)
以上是生活随笔為你收集整理的链表 - 头节点的意义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对话MVP | 柳贵:在FISCO BC
- 下一篇: 正则表达式验证包含0的正正整数