爲什麼要設置鏈表頭結點?

<整理資料>
Q:什麼是頭結點?
A:數據結構中,在單鏈表的開始結點之前附設一個類型相同的結點,稱之爲頭結點。頭結點的數據域可以不存儲任何信息,頭結點的指針域存儲指向開始結點的指針(即第一個元素結點的存儲位置)。
A:頭結點其實就是一個數據域爲空的結點(當然也可儲存鏈表的長度之類的數據,一般對鏈表操作無影響),而首元結點就是第一個元素結點,即頭結點後邊的第一個結點。

Q:用來幹嘛?
A:
1、防止單鏈表是空的而設的。當鏈表爲空的時候,帶頭結點的頭指針就指向頭結點。如果當鏈表爲空的時候,單鏈表沒有帶頭結點,那麼它的頭指針就爲NULL。
2、在第一個元素結點前插入結點(或刪除第一個結點),使其操作與對其它結點一致。帶頭結點時,不論刪除哪個位置上的結點,用到的代碼都一樣;不帶頭結點時,刪除第1個元素和刪除其它位置上的元素用到的代碼不同,相對比較麻煩。
此處網友解釋清楚:https://www.cnblogs.com/cs-lcy/p/7045303.html
3、頭結點的存在使得空鏈表與非空鏈表的處理操作一致。單鏈表加上頭結點之後,無論單鏈表是否爲空,頭指針始終指向頭結點,因此空表和非空表的處理也統一了。
4、對單鏈表的多數操作應明確對哪個結點以及該結點的前驅。不帶頭結點的鏈表對首元結點、中間結點分別處理等;而帶頭結點的鏈表因爲有頭結點,首元結點、中間結點的操作相同 ,從而減少分支,使算法變得簡單 ,流程清晰。對單鏈表進行插入、刪除操作時,如果在首元結點之前插入或刪除的是首元結點,不帶頭結點的單鏈表需改變頭指針的值,在C 算法的函數形參表中頭指針一般使用指針的指針(在C+ +中使用引用 &);而帶頭結點的單鏈表不需改變頭指針的值,函數參數表中頭結點使用指針變量即可。
感謝:https://blog.csdn.net/leo115/article/details/8602621

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