初始化单链表

思路

这个函数的功能在于在将一个地址赋值给指针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));
  • sizeof():计算变量所占的空间
  • malloc():分配空间
  • (Linklist):将malloc分配的那个空间地址保存在Linklist中

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容