鍊錶 頭指標 頭結點 第乙個結點的區別與聯絡

2021-06-28 19:28:33 字數 1328 閱讀 5757

圖1為線性表(zhao, qian, sun, li, zhou, wu, zheng, wang)的邏輯狀態。頭指標

指示鍊錶中第乙個結點(即第乙個資料元素的儲存映像)的儲存位置。同時,由於最後乙個資料元素沒有直接後繼,則線性鍊錶中最後乙個結點的指標為「空」(null)。

圖1 線性鍊錶的邏輯狀態

由上述描述可見,單鏈錶可由頭指標來唯一確定,在c語言中可用「結構指標」來描述。

view plain

copy to clipboard

print

?//-----線性表的單鏈表儲存結構----- 

typedef

structlnodelnode, *linklist;  

有時在單鏈表的第乙個結點之前附設乙個結點,稱之為頭結點

頭結點的資料域可以不儲存任何資訊,也可以儲存如線性表長度等類的附加資訊,頭結點的指標域儲存指向第乙個結點的指標(即第乙個元素結點的儲存位置)。如圖2(a)所示,此時,單鏈表的頭指標指向頭結點。若線性表為空,則頭結點的指標域為「空」,如圖2(b)所示。

圖2 帶頭結點的單鏈表   

(a)非空表;(b)空表

迴圈鍊錶是另一種形式的鏈式儲存結構。它的特點是表中最後乙個節點的指標域指向頭結點,整個鍊錶形成乙個環。由此,從表中任一結點出發均可找到表中其他結點,如圖3所示為單鏈的迴圈鍊錶 。 

圖3 單鏈迴圈表 (a)非空表;(b)空表

迴圈鍊錶的操作和線性鍊錶基本一致,差別僅在於演算法中的迴圈條件不是p或p->next 是否為空,而是它們是否等於頭指標,但有的時候,若在迴圈鍊錶中設立尾指標而不設頭指標(如圖4(a)所示),可使某些操作簡化。例如將兩個線性表合併成乙個表時,僅需將乙個表的尾表和另乙個表的頭表相接。當線性表以圖2.4(a)的迴圈鍊錶作儲存結構時,這個操作僅需改變兩個指標值即可,運算時間為o (1)。合併後的表如圖4(b)所示。

圖4 僅設尾指標的迴圈鍊錶 (a)兩個鍊錶;(b)合併後的表

以上討論的鏈式儲存結構的節點中只有乙個指示直接後繼的指標域,由此,從某個結點出發只能順指標往後尋查其他結點。若要尋查節點的直接前趨,則需從表頭指標出發。換句話說,在單鏈表中,nextelem的執行時間為o(1),而priorelem的執行時間為o(n)。為克服單鏈表這種單向性的缺點,可利用雙向鍊錶。顧名思義,在雙向鍊錶的結點中有兩個指標域,其一指向直接後繼,另一指向直接前趨。在c語言中可描述如下: 

圖5 雙向鏈表示例 (a)結點結構;(b)空的雙向迴圈鍊錶;(c)非空的雙向迴圈鍊錶

創 鍊錶 頭指標 頭結點 第乙個結點

2.頭指標具有標識作用,因此經常使用鍊錶的名字作為頭指標名 3.無論鍊錶是否為空,頭指標均不為空。頭指標是鍊錶的必要元素。關於頭結點 1.頭結點是放在第乙個元素結點之前的結點,頭結點不是鍊錶中的必須元素,其資料域一般無意義,有些情況下會存放鍊錶的長度,或用作監視哨等 2.有了頭結點後,對在第乙個元素...

鍊錶 頭指標 頭結點

圖1為線性表 zhao,qian,sun,li,zhou,wu,zheng,wang 的邏輯狀態。頭指標 指示鍊錶中第乙個結點 即第乙個資料元素的儲存映像 的儲存位置。同時,由於最後乙個資料元素沒有直接後繼,則線性鍊錶中最後乙個結點的指標為 空 null 圖 線性鍊錶的邏輯狀態 由上述描述可見,單鏈...

鍊錶 頭指標 頭結點

圖1為線性表 zhao,qian,sun,li,zhou,wu,zheng,wang 的邏輯狀態。頭指標 指示鍊錶中第乙個結點 即第乙個資料元素的儲存映像 的儲存位置。同時,由於最後乙個資料元素沒有直接後繼,則線性鍊錶中最後乙個結點的指標為 空 null 圖 線性鍊錶的邏輯狀態 由上述描述可見,單鏈...