鍊錶虛擬頭結點存在的意義

2021-10-06 15:11:00 字數 689 閱讀 5185

鍊錶又 資料域 還有指標域

資料結構中,在單鏈表的開始結點之前附設乙個型別相同的結點,稱之為頭結點。頭結點的資料域可以不儲存任何資訊,頭結點的指標域儲存指向開始結點的指標(即第乙個元素結點的儲存位置)。作用

1、防止單鏈表是空的而設的.當鍊表為空的時候,帶頭結點的頭指標就指向頭結點.如果當鍊表為空的時候,單鏈表沒有帶頭結點,那麼它的頭指標就為null.

2、是為了方便單鏈表的特殊操作,插入在表頭或者刪除第乙個結點.這樣就保持了單鏈表操作的統一性!

3、單鏈表加上頭結點之後,無論單鏈表是否為空,頭指標始終指向頭結點,因此空表和非空表的處理也統一了,方便了單鏈表的操作,也減少了程式的複雜性和出現bug的機會。

4、對單鏈表的多數操作應明確對哪個結點以及該結點的前驅。不帶頭結點的鍊錶對首元結點、中間結點分別處理等;而帶頭結點的鍊錶因為有頭結點,首元結點、中間結點的操作相同 ,從而減少分支,使演算法變得簡單 ,流程清晰。對單鏈表進行插入、刪除操作時,如果在首元結點之前插入或刪除的是首元結點,不帶頭結點的單鏈表需改變頭指標的值,在c 演算法的函式形參表中頭指標一般使用指標的指標(在c+ +中使用引用 &);而帶頭結點的單鏈表不需改變頭指標的值,函式引數表中頭結點使用指標變數即可。

鍊錶的虛擬頭結點

public class linkedlist public node e e public node override public string tostring 虛擬頭結點 private node dummyhead private int size public linkedlist 獲取...

203 移除鍊錶元素 (虛擬頭結點)

移除鍊錶元素 刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6輸出 1 2 3 4 5要判斷刪除的是否為頭結點。class solution 非頭結點需要刪除 listnode p head while p null p next null else re...

尋找鍊錶存在環時 環的頭結點

偶然發現很多文章和牛客 leetcode上的說明都是錯的,大部分的公式貌似都以為fast結點多走一圈就和slow相遇,貌似沒有考慮到fast可能會多跑了n圈的結果.fast結點每次走兩步,slow結點每次走一步 公式如下 假設煉表頭結點到環的頭結點長度為a 環的頭結點到第一次相遇的結點距離為b,環的...