关于链表的有关问题,有关问题很简单,只是小弟我搞不掂,所以来送分啦

关于链表的问题,问题很简单,只是我搞不掂,所以来送分啦!
我现在是想实现一个单链表正常的增、删、改、查,我自己写的代码是有问题的。它第一个显示出来的数据一直是0。我想我现在碰到的问题是在于链表的头结点处理上没弄明白,求各位大神指点。喜欢赵4老师光临。
//////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include <iostream>
using namespace std;
#include <ctime>

//创建链表的数据结构
typedef struct NODE
{
int num;
NODE * pNext;
};
//生成表头
void CreatNodeList(NODE * head)
{
head = (NODE *)malloc(sizeof(NODE));
if (NULL == head)
{
return;
}
head->pNext = NULL;
}

//插入节点
void InsertNodeList(NODE * head)
{
NODE * InserNode = (NODE *)malloc(sizeof(NODE));
if (InserNode == NULL)
{
return ;
}
InserNode->num = rand()%11;
InserNode->pNext = head->pNext;
head->pNext = InserNode;

}
//显示节点信息
void ShowNodeList(NODE * head)
{
while (head->pNext != NULL)
{
cout<<head->num<<" ";
head = head->pNext;
}
cout<<endl;
}
int main()
{
srand(time(0));
NODE head={0};
CreatNodeList(&head);
for (int i=0;i<10;i++)
{
InsertNodeList(&head);
}
ShowNodeList(&head);
return 0;
}
关于链表的有关问题,有关问题很简单,只是小弟我搞不掂,所以来送分啦
------解决思路----------------------
head节点被打印出来了   而且还漏掉一个节点  用下面这个

//显示节点信息
void ShowNodeList(NODE * head)
{
head=head->pNext;
while (head)

{
cout<<head->num<<" ";
head = head->pNext;
}
cout<<endl;
}
------解决思路----------------------
/创建链表的数据结构
typedef struct NODE
{
int num;
NODE * pNext;
};
//生成表头
void CreatNodeList(NODE * head)
{
if (NULL != head)
return;
head = (NODE *)malloc(sizeof(NODE));
head->pNext = NULL;
}

//插入节点
void InsertNodeList(NODE * head)
{
NODE * InserNode = (NODE *)malloc(sizeof(NODE));
if (InserNode == NULL)
{
return ;
}
InserNode->num = rand()%11;
InserNode->pNext = head->pNext;
head->pNext = InserNode;

}
//显示节点信息
void ShowNodeList(NODE * head)
{
while (head->pNext != NULL)
{
head = head->pNext;////你的头节点NUM没赋值,为0,所以你每次都会输出0.,把这句提前就可以了
cout<<head->num<<" ";

}
cout<<endl;
}
int main()
{
srand(time(0));
NODE head={0};
CreatNodeList(&head);
for (int i=0;i<10;i++)
{
InsertNodeList(&head);
}
ShowNodeList(&head);
return 0;
}