c语言数据结构双链表头插法的一个报错

代码第17行和第21行分别报错为:
“取消对 NULL 指针“L”的引用。”
“取消对 NULL 指针“s”的引用。”

这个该怎么解决,报错的意思是什么

#include"stdio.h"
#include"malloc.h"
#define ElemType int

typedef struct DNode
{
    ElemType data;
    struct DNode* prior;
    struct DNode* next;
} DLinkNode;

//建立双链表(头插法)
void CreatListF(DLinkNode*& L, ElemType a[], int n)
{
    DLinkNode* s;
    L = (DLinkNode*)malloc(sizeof(DLinkNode));
    L->prior = L->next = NULL;
    for (int i = 0; i < n; i++)
    {
        s = (DLinkNode*)malloc(sizeof(DLinkNode));
        s->data = a[i];
        s->next = L->next;
        if (L->next != NULL)
            L->next->prior = s;
        L->next = s;
        s->prior = L;
    }
}

https://cjpnice.gitee.io/2020/05/06/DataStructure-DLinkList/
这是我之前写的文章,你可以对照看看代码,我注释写的很详细,博客里还有其他关于数据结构的,你也可以看看