c資料結構線性表之單鏈表 帶頭結點 基本操作

2021-08-28 11:34:14 字數 2192 閱讀 8696

#include#include#define maxsize 10

#define elemtype char

#define ok 1

#define error 0

typedef struct node/*結點型別定義*/

node,*linklist;/* linklist為結構體指標型別*/

//換行函式

void enter(int n)

//計算單鏈表的長度

int list_len(linklist h)

return j;

}

//用尾插法建立單鏈表

int create_from_tail(linklist h)

else

}enter(1);

return(ok);

}//列印鍊錶資料

void print_out(linklist h)

enter(2);

}//按結點查詢

node *get(linklist h,int i)

if(i==j)

else

}//按元素值查詢

int locate(linklist h,elemtype key)

else break;

}if(p==null)

else

}//單鏈表插入操作

int ins_list(linklist h,int i,elemtype e)

pre=get(h,i-1);//呼叫get函式,找到第i-1個結點

if(pre==null)

else

}//單鏈表刪除操作

int del_list(linklist h,int i, char *e)

else

}//主方法

int main()

printf("單鏈表長度:%d",list_len(h));

enter(2);

printf("請輸入需查詢的節點:");

scanf("%d",&a);

if(get(h,a)==null) //按結點查詢

else printf("查詢到的元素:%c",*get(h,a));

enter(2);

printf("請輸入要查詢的元素值:");

getchar();

scanf("%c",&b);

locate(h,b);//按值查詢

enter(2);

printf("請輸入要插入的位置和元素,[hint:輸入兩個資料之間有逗號]:");

getchar();

scanf("%d,%c",&d,&c);

ins_list(h,d,c);//插入

printf("請輸入要刪除的位置:");

getchar();

scanf("%d",&f);

del_list(h,f,&e);//刪除

資料結構中,在單鏈表的開始結點之前附設乙個型別相同的結點,稱之為頭結點。頭結點的資料域可以不儲存任何資訊,頭結點的指標域儲存指向開始結點的指標(即第乙個元素結點的儲存位置)。

作用

1、防止單鏈表是空的而設的.當鍊表為空的時候,帶頭結點的頭指標就指向頭結點.如果當鍊表為空的時候,單鏈表沒有帶頭結點,那麼它的頭指標就為null.

2、是為了方便單鏈表的特殊操作,插入在表頭或者刪除第乙個結點.這樣就保持了單鏈表操作的統一性!

3、單鏈表加上頭結點之後,無論單鏈表是否為空,頭指標始終指向頭結點,因此空表和非空表的處理也統一了,方便了單鏈表的操作,也減少了程式的複雜性和出現bug的機會。

4、對單鏈表的多數操作應明確對哪個結點以及該結點的前驅。不帶頭結點的鍊錶對首元結點、中間結點分別處理等;而帶頭結點的鍊錶因為有頭結點,首元結點、中間結點的操作相同 ,從而減少分支,使演算法變得簡單 ,流程清晰。對單鏈表進行插入、刪除操作時,如果在首元結點之前插入或刪除的是首元結點,不帶頭結點的單鏈表需改變頭指標的值,在c 演算法的函式形參表中頭指標一般使用指標的指標(在c+ +中使用引用 &);而帶頭結點的單鏈表不需改變頭指標的值,函式引數表中頭結點使用指標變數即可。

資料結構 線性表之帶頭結點單鏈表

之前跟著朱老師寫的乙個帶頭結點的 建立鍊錶時有兩種方法,一種是先初始化 建立乙個空鍊錶 然後對這個空鍊錶進行結點輸入,建立鍊錶 這個時候,由於已經有了頭結點,將其傳入,直接在頭結點的後面進行操作 另外一種是將初始化和建立鍊錶放到乙個函式裡,這時候傳入的鍊錶就什麼都沒有,連頭結點也沒有 先建立頭結點,...

資料結構之單鏈表(帶頭節點)

今天來聊聊單鏈表。單鏈表是以節點存的鏈式結構,分為帶頭節點和不帶頭節點的單鏈表。單鏈表中的節點包括data域和next域,data域儲存元素的值,next域則儲存下乙個節點的位址。單鏈表中的各個節點在記憶體中不一定是連續儲存的,儲存形式如下圖所示 從圖中可以看出,單鏈表中的各個節點並不是連續儲存的。...

資料結構 單鏈表(帶頭結點)

單鏈表是一種鏈式訪問的資料結構,用一組位址任意的儲存單元存放線性表中的資料元素。鍊錶中的資料是以結點來表示的,每個結點的構成 元素 資料元素的映象 指標 指示後繼元素儲存位置 元素就是儲存資料的儲存單元,指標就是連線每個結點的位址資料。簡單講就是邏輯相鄰,物理不相鄰 帶頭結點 list.h prag...