在單鏈表的基本操作中,我們在實現時,往往在第乙個結點(含有有效資料)之前新增另外乙個結點,也就是頭結點。同時我們稱指向頭結點的指標為頭指標。結構如下圖所示:
頭節點中的資料域可以儲存鍊錶長度等額外的資訊,也可以不儲存任何資訊。
頭結點即鍊錶中的第乙個節點(注意頭節點不同於第乙個元素),而頭指標則是指向頭結點的指標(有頭結點的情況下)。任何乙個鍊錶實現中,可以沒有頭結點,但是不能沒有頭指標。
我們這裡用圖形描述帶頭結點的非空煉表和空鍊錶的情況:
為了比較,下面是不帶頭結點鍊錶的情況:
這裡我們解釋一下帶頭結點的單鏈表和不帶頭結點單鏈表的區別:
兩者最大的區別在於結構和演算法操作上。
結構:帶頭結點的單鏈表,不管鍊錶是否為空,都有乙個頭結點;而不帶頭結點的單鏈表則不包含頭結點。
操作:
帶頭結點的單鏈表初始化時表現為申請乙個頭結點。
無論在什麼情況下,插入和刪除操作步驟一致。而不帶頭結點的單鏈表,在插入和刪除操作時要考慮插入或者刪除的位置是否是第乙個結點,並採取不同操作。
總結:鏈式儲存結構中,如果鍊錶由頭結點,則頭指標指向頭結點;否則頭指標指向第一元素結點。
任何情況下,頭指標都存在,無論鍊錶是否為空。
頭結點是為了方便同一操作額外新增的,通過新增頭結點,對在第乙個元素結點前插入新結點或者刪除新結點的操作與對其他結點的插入刪除操作一致。
頭結點根據實現可有可無。
單鏈表 頭指標與頭結點
頭指標 頭指標是指鍊錶指向第乙個結點的指標,若煉表有頭結點,則是指向頭結點的指標。頭指標具有標識作用,所以常用頭指標冠以鍊錶的名字。無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素。頭結點 它是為了操作的統一和方便設立的,放在第乙個元素的結點之前,其資料域一般無意義 但也可以用來存放鍊錶的長...
線性表 單鏈表(頭結點與頭指標)
當鍊表的每個結點只包含乙個指標域時,我們稱此鍊錶為單鏈表。關於單鏈表的訪問,有時候我們在單鏈表的第乙個結點 有效元素 之前附設乙個結點,稱之為頭結點 指向頭結點的指標,稱之為頭指標 對單鏈表的訪問必須從頭指標開始進行,由於單鏈表的最後乙個資料元素沒有直接後繼,則指標為null。對於頭結點,資料域可以...
結構之美 單鏈表的頭結點與頭指標
當鍊表的每個結點只包含乙個指標域時,我們稱此鍊錶為單鏈表。關於單鏈表的訪問,有時候我們在單鏈表的第乙個結點 有效元素 之前附設乙個結點,稱之為頭結點 指向頭結點的指標,稱之為頭指標 對單鏈表的訪問必須從頭指標開始進行,由於單鏈表的最後乙個資料元素沒有直接後繼,則指標為null。對於頭結點,資料域可以...