1. 程式人生 > >帶頭節點的連結串列和不帶頭結點的連結串列有何不同

帶頭節點的連結串列和不帶頭結點的連結串列有何不同

  單鏈表是一種最為基本的資料結構,常用的單鏈表又分為帶頭結點和不帶頭結點兩種。從線性表的定義可以知道,線性表要求允許在任意位置進行插入和刪除操作。所有的連結串列都有一個頭指標head,帶頭結點的連結串列中head的資料項為空。接下來具體分析。

1.帶頭節點的連結串列的插入,首先使用臨時變數p等於要插入之前的節點(不管具體的插入位置),之後不管要插入的節點x是插到連結串列頭還是插到連結串列的其他位置都是如下語句:x->next = p->next;p->next = x;

2.不帶頭結點的連結串列的插入,若要插到連結串列的開頭則

x->next = head->next;
head = x;//這裡不再是head->next = x
若插到連結串列的其他位置則
p = 插入之前的節點
x->next = p->next;
p->next = x;

3.帶頭結點的連結串列的刪除,不解釋,同樣不存在刪除位置的差異。

4.不帶頭結點的連結串列的刪除,刪除第一個節點時,head=head->next。刪除其他節點時,head的值不會改變。

綜上所述,帶頭節點的單鏈表,不論刪除和插入的位置如何,不需要修改head的值,不帶頭結點的單鏈表則需要修改head的值。所以單鏈表一般為帶頭結點的單鏈表