数据结构中申请一个节点的有关问题,初始化如何就不成功呢?

数据结构中申请一个节点的问题,初始化怎么就不成功呢????
链式存储结构申请节点并初始化,不能执行,执行的时候说要调试呀??怎么回事.
运行不通过,不知道什么地方错了??????
#include <iostream>
using namespace std;
typedef struct Node
{
int data;
struct Node *next;
}Node,*LinkList;
void InitList(LinkList *L);
void CreatFromHead(LinkList L);
void InitList(LinkList L)
{
L=new Node;
L->next=NULL;
}
void CreatFromHead(LinkList L)
{
Node *s;
char c;
int flag=1;
while(flag)
{
cout<<"qifskfj"<<endl;
cin>>c;
if(c!='^')
{
s=new Node;
s->data=c;
s->next=L->next;
L->next=s;
}
else flag=0;
}
}
void main()
{
LinkList L;
InitList(L);
CreatFromHead(L);
}

------解决方案--------------------
虽然InitList函数声明中是传地址引用,但是后面的函数实现以及函数调用都是传值引用吧?
------解决方案--------------------
没有弄清楚指针,改写代码:

C/C++ code
 #include  <iostream>
using namespace std;
typedef struct Node
{
    int data;
    struct Node *next;
}Node,*LinkList;

void InitList(LinkList *L);
void CreatFromHead(LinkList L);

void InitList(LinkList *L)
{
    *L=new Node;
    (*L)->next=NULL;
}
void CreatFromHead(LinkList L)
{
    Node *s;
    char c;
    int flag=1;
    
    while(flag)
    {
        cout < <"qifskfj" < <endl;
        cin>>c;
        if(c!='^')
        {
            s=new Node;
            s->data=c;
            s->next=L->next;
            L->next=s;
        }
        else flag=0;
    }
}
void main()
{
    LinkList L;
    InitList(&L);
    CreatFromHead(L);
}