求指教,实在不知错哪了.一个小程序,麻烦大家看下,非常感谢

求指教,实在不知哪里错了...一个小程序,麻烦大家看下,非常感谢
[code=C/C++][/code]#include <stdio.h>
#include <string.h>
/*------------------------------------------------------*/
typedef int status;
typedef int Elemtype;
typedef struct{
  Elemtype data;
  struct LNode *next;
}LNode, *LinkList;
void main(void)
{
  LinkList L;
  CreateList(&L,5);
  ListLength(L);
}
status CreateList(LinkList *L,int n){
  //逆位序输入n个元素的值,建立带表头结点的单链线性表L
  int i;
  char c;
  LinkList p,pL;
  pL = (LinkList)malloc(sizeof(LNode));
  pL -> next = NULL; //先建立一个带头结点的单链表
  for(i = 0;i < n;i++){
  p = (LinkList)malloc(sizeof(LNode)); //生成新结点
  scanf("%d",&(p->data)); //输入元素值
  p -> next = pL -> next;
  pL -> next = p; //插入到表头
  }
  *L = pL;
}

int ListLength(LinkList L){
  LinkList p ;
  int i = 0;
  p = L -> next;
  while(p != NULL)i++;
  printf("%d",i);
}
ListLength(LinkList L)老是没法运行,但也没报错....

------解决方案--------------------
我用的是gcc编译器, 报错了, 如下:

警告:不兼容的指针类型赋值。