思路
這個(gè)函數(shù)的功能在于在將一個(gè)地址賦值給指針L
從而L能指向新的頭結(jié)點(diǎn)Node(頭結(jié)點(diǎn)建立完成)
然后將頭指針的next指向空
表示這是一個(gè)空的單鏈表(建立一個(gè)空的單鏈表完成)
代碼
InitList (Linklist *L)
{
*L=(Linklist)malloc(sizeof(Node)); //建立頭節(jié)點(diǎn)
(*L)->next=NULL; //單鏈表L為空
}
要點(diǎn)
為什么在代碼中形參要使用*L午衰,并且在代碼實(shí)現(xiàn)中也要使用*L而不是L
要將一個(gè)地址賦值給指針L呢燥,從而L能指向新的頭結(jié)點(diǎn)Node
那么我們要既然要改變L的值
就最好通過形參傳址,使得形參和實(shí)參共用一個(gè)地址
這樣函數(shù)中若形參的值改變澈蟆,實(shí)參也會(huì)改變,間接實(shí)現(xiàn)數(shù)據(jù)的雙向傳遞
所以在形參中要使用*L
(注意此時(shí)的L為指針的指針瘪吏,二級(jí)指針)
而既然形參為*L
那么在代碼實(shí)現(xiàn)中為了讓接收新地址的L變量類型也為地址
就要通過運(yùn)算符*的使用取二級(jí)指針*L內(nèi)容為L
(所以在代碼實(shí)現(xiàn)中所有的*L實(shí)際都相當(dāng)于L)
代碼解釋
*L=(Linklist)malloc(sizeof(Node));
- sizeof():計(jì)算變量所占的空間
- malloc():分配空間
- (Linklist):將malloc分配的那個(gè)空間地址保存在Linklist中
意思即為計(jì)算結(jié)構(gòu)體類型Node需要的空間后癣防,為它分配一個(gè)空間,并將所分配的空間地址保存在*L(實(shí)際為L)中
這樣下來掌眠,讓指針L指向頭結(jié)點(diǎn)Node的地址
也等同于讓賦值了頭結(jié)點(diǎn)的地址的頭指針L成功指向頭結(jié)點(diǎn)
建立頭結(jié)點(diǎn)的動(dòng)作完成