一、 先區分一下概念:
頭結點:
在單鏈表第乙個元素結點之前設定的乙個結點,資料域可以不存任何資訊,指標域指向單鏈表第乙個元素的結點。對於單鏈表來說,頭結點可有可無,但為了操作方便,一般情況下單鏈表都具有頭結點,後面的分析將會區別一下有頭結點和沒有頭結點的區別。
優點:減少了單鏈表新增刪除時特殊情況的判斷,減少了程式的複雜性,主要是新增和刪除在第乙個有元素的結點(首元結點)上有區別,如果鍊錶沒有頭結點,則刪除或新增時都得需要判斷一次首元結點,有了頭結點以後,首元結點實際為鍊錶的第二個結點,使得所有的元素結點的新增刪除更具有統一性,舉例如下:
二、 以刪除結點舉例:
view plain copy
typedef struct stu
type;
沒有頭結點的情況:
view plain copy
type * delete(type * head,intnum)
pb=head;
while ((pb->num!=num) &&(pb->next!=null))
if(pb->num==num)
else
free(pb);
printf("the node isdeleted\n");
}else
return head;
} 有頭結點的情況:
view plain copy
type * delete(type * head,intnum)
pf = head;
pb=head->next;
while (pb->num!=num &&pb->next!=null)
if(pb->num==num)
else
return head;
} 經以上刪除結點**看出,當沒有頭結點時,每次刪除時都得去做下特殊判斷,而刪除帶有頭結點的鍊錶時,刪除的處理上更具有統一性,這也體現了鍊錶有頭結點的優點。
三、 頭指標:
頭指標:
指向單鏈表的第乙個結點的指標,如果單鏈表有頭結點,則頭指標指向頭結點,如果單鏈表沒有頭結點,則頭指標指向第乙個首元結點。
首元結節(首元素):
點單鏈表中第乙個有資料元素的結點。如果單鏈表有頭結點,則首元結點為頭結點的下乙個結點,如果單鏈表沒有頭結點,則首元結點就是單鏈表的第乙個結點。
頭結點 頭指標的區別與意義
頭結點 頭指標 頭結點指的是鍊錶中物理上的第乙個結點 頭指標指的是指向物理上第乙個結點的指標 存放該結點位址的變數 開始結點指的是邏輯上的第乙個元素的結點 但是資料結構中為了簡化插入刪除操作,鍊錶一般都是有空的頭結點的,這樣開始結點就成了事實上 物理上的 第二個結點了 頭指標必須有,但是頭結點可有可...
頭指標,頭結點 首元節點
鍊錶中第乙個結點的儲存位置叫做頭指標,那麼整個鍊錶的訪問就必須是從頭指標開始進行了。之後的每乙個結點,其實就是上乙個的後繼指標指向的位置。這裡有個地方要注意,就是對頭指標概念的理解,這個很重要。鍊錶中第乙個結點的儲存位置叫做頭指標 如果鍊錶有頭結點,那麼頭指標就是指向頭結點資料域的指標。畫乙個圖吧。...
帶有頭結點,頭指標真,尾指標的棧基本操作
include using namespace std typedef char elemtype 帶有頭結點,頭指標真,尾指標的棧基本操作 struct stack pstack pstack ptop pstack pbottom 定義頭指標,尾指標 stack ptop,pbottom 生成頭...