美文网首页
初始化单链表

初始化单链表

作者: Longjune | 来源:发表于2021-03-21 16:24 被阅读0次

    思路

    这个函数的功能在于在将一个地址赋值给指针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成功指向头结点
    建立头结点的动作完成

    相关文章

      网友评论

          本文标题:初始化单链表

          本文链接:https://www.haomeiwen.com/subject/jztocltx.html