頭指標和頭結點

2022-09-23 20:48:13 字數 1077 閱讀 4248

對於乙個鍊錶來說 頭指標是必須的 頭結點是可有可無的

不過頭結點為鍊錶的插入實現了統一化

在乙個沒有頭結點的鍊錶裡面,我們要插入乙個結點我們要傳的是頭指標的位址,因為我們在插入第乙個結點的時候要改變頭指標 (想改表乙個東西就要傳它的位址,我們現在要改變的是這個指標 所以要傳的是這個指標的位址,這裡考慮的後插 所以只有第一次會改變頭指標)

沒有頭結點的鍊錶 頭指標初始化是這樣的

void init(list **head)

void insert_list(list **l,int new_value)

if( *l == null )

else

new->value = new_value;

new->next = null;

temp->next = new;}}

int main()

下面寫乙個有頭結點的鍊錶

有頭節點的鍊錶初始化的時候已經申請了乙個鍊錶節點的空間作為頭指標,這個節點本身沒有太大意義 它的資料段是不存放我們想要輸入的資料的 下面我們來初始化乙個有頭結點的鍊錶

int main()

list *creat_list()

head->next = null;

return head;

}因為我們已經為頭指標賦了乙個位址(頭結點的位址),不要問為什麼要插入乙個不用的結點,這個只是為了之後插入節點時不需要改變頭指標的,實現插入的統一化。我們在之後的插入都不會改變頭指標,因為我們插到頭結點的後面的,所以我們後面插入的時候直接傳head(結構體指標)就可以了 不需要傳&head;

void insert_list(list *head,int new_value)

new = (list *)malloc(sizeof(list))

if(new ==null)

new->value = new_value;

new->next = null;

head->next = new;

}因為定義了乙個頭結點 這裡面是不存放有效數字的 所以我們遍歷列印的時候 要從head->next開始列印 判斷這個表是不是空判斷的也是判斷head->next是否為null

頭結點和頭指標的理解

線性表使用順序 陣列 儲存時有個弊端,那就是在插入和刪除時需要大量的移動資料,這顯示是非常消耗時間的,所以可以採用鏈式儲存,即有乙個指標域 單鏈表 來記錄下個結點的儲存位置 位址 這樣在插入和刪除結點時只需要修改指標域即可,從而大量減少移動資料所消耗的時間。來看鍊錶的定義 struct node 其...

單鏈表的頭結點和頭指標

當鍊表的每個結點只包含乙個指標域時,此鍊錶就是單鏈表。在單鏈表的開始結點之前附設乙個型別相同的結點,稱之為頭結點。頭結點的資料域可以不儲存任何資訊,頭結點的指標域儲存指向開始結點的指標 即第乙個元素結點的儲存位置 頭指標是指向第乙個結點的指標,鍊錶中可以沒有頭結點,但是不能沒有頭指標。單鏈表的定義 ...

單鏈表指標和頭結點的理解

線性表使用順序 陣列 儲存時有個弊端,那就是在插入和刪除時需要大量的移動資料,這顯示是非常消耗時間的,所以可以採用鏈式儲存,即有乙個指標域 單鏈表 來記錄下個結點的儲存位置 位址 這樣在插入和刪除結點時只需要修改指標域即可,從而大量減少移動資料所消耗的時間。來看鍊錶的定義 struct node 其...