初始化单链表

2021-03-21  本文已影响0人  Longjune

思路

这个函数的功能在于在将一个地址赋值给指针L
从而L能指向新的头结点Node(头结点建立完成)

然后将头指针的next指向空
表示这是一个空的单链表(建立一个空的单链表完成)

代码

InitList (Linklist *L)
{
    *L=(Linklist)malloc(sizeof(Node));  //建立头节点
    (*L)->next=NULL;    //单链表L为空
}

要点

为什么在代码中形参要使用*L,并且在代码实现中也要使用*L而不是L

要将一个地址赋值给指针L,从而L能指向新的头结点Node
那么我们要既然要改变L的值
就最好通过形参传址,使得形参和实参共用一个地址
这样函数中若形参的值改变,实参也会改变,间接实现数据的双向传递
所以在形参中要使用*L
(注意此时的L为指针的指针,二级指针)

而既然形参为*L
那么在代码实现中为了让接收新地址的L变量类型也为地址
就要通过运算符*的使用取二级指针*L内容为L
(所以在代码实现中所有的*L实际都相当于L)

代码解释

*L=(Linklist)malloc(sizeof(Node));

意思即为计算结构体类型Node需要的空间后,为它分配一个空间,并将所分配的空间地址保存在*L(实际为L)中

这样下来,让指针L指向头结点Node的地址
也等同于让赋值了头结点的地址的头指针L成功指向头结点
建立头结点的动作完成

上一篇 下一篇

猜你喜欢

热点阅读