C语言数据结构问题,初始化头指针

void InitList(LNode *&L){
    L = (LNode * )malloc(sizeof(LNode));
    L -> next = NULL;
}

C语言的这串代码,在定义头指针时,头指针的所在的节点有没有数据域?

img


是上面的形式,还是下面的

如何解读这串代码//L = (LNode * )malloc(sizeof(LNode));

有没有数据域主要看你自己的实现,两种方式都是可以的。
L = (LNode * )malloc(sizeof(LNode));这句话中,malloc用于申请内存空间,内存空间的大小是结构体LNode的大小,malloc申请的内存返回值类型是void *,所以需要(LNode * )来强制转换一下。

这种一般是哨兵节点,头结点不存储有效数据