1. 程式人生 > >頭指標、頭節點和首元節點詳解

頭指標、頭節點和首元節點詳解

很多初學者在學習連結串列時,對頭指標、頭節點和首元節點的概念及用法不是很清楚,本節就大家遇到的主要問題進行鍼對性的講解。

圖 4 頭節點、頭指標和首元節點

頭節點

有時,在連結串列的第一個節點之前會額外增設一個節點,該節點的資料域一般不存放資料(有些情況下也可以存放連結串列的長度等資訊),此節點被稱為頭節點

若連結串列中存在頭節點,且頭節點的指標域為空(NULL),表明連結串列是空表。

頭節點對於連結串列來說,不是必須的,換句話說,一個完整的連結串列中可以不設有頭節點。那麼,可能有人會問:既然頭節點無關緊要,那它有什麼作用?在處理某些問題時,給連結串列新增頭節點會使問題變得簡單。

首元節點

連結串列中第一個元素所在的節點,它是頭節點後邊的第一個節點。

其實,首元節點和連結串列中存放資料的其他節點沒什麼不同,只是因為該節點位於連結串列的頭部,所以被稱為首元節點。

頭指標

連結串列的頭指標永遠指向連結串列中第一個節點的位置,換句話說,如果連結串列有頭節點,頭指標指向頭節點;否則,頭指標指向首元節點。

一個連結串列可以頭節點,但不能沒有頭指標。


頭節點和頭指標的區別是:
  • 頭指標是一個指標,頭指標指向連結串列的頭節點或者首元節點;
  • 頭節點是一個實際存在的節點,它包含有資料域和指標域。
頭節點和頭指標的區別在程式中的直接體現是:頭指標只宣告而沒有分配儲存空間,頭節點需要宣告並分配一個節點的實際實體記憶體。