哪位高手能帮忙调试一下小弟我的程序,或者找出程序中的有关问题,在调试时总是提示函数InitList L=(LinkList)malloc(sizeof(LNODE))

谁能帮忙调试一下我的程序,或者找出程序中的问题,在调试时总是提示函数InitList L=(LinkList)malloc(sizeof(LNODE))
#include <stdio.h>
#include<stdlib.h>
#include<malloc.h>

#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -1

typedef int ElemType;
typedef int Status;
typedef struct LNode{
//定义结点
ElemType data;
struct LNode *next;
}LNode,*LinkList;

void InitList(LinkList &L){
L=(LinkList)malloc(sizeof(LNODE));
if(!L)
exit(OVERFLOW);
L.next=NULL;
}
void DestroyList(LinkList L){
LinkList q;
while(L){
q=L.next;
free(L);
L=q;
}

}


void   ClearList(LinkList L){
LinkList p,q;
p=L.next;
while(p){
q=p;
free(p);
        p=q.next;
}
L.next=NULL;
}

Status Listempty(LinkList&L){
if(L.next)
return FALSE;
else
rerurn TRUE;
}


 int ListLength(LinkList L)
 { // 初始条件:线性表L已存在。操作结果:返回L中数据元素个数
   int i=0;
   LinkList p=L->next; // p指向第一个结点
   while(p) // 没到表尾
   {
     i++;
     p=p->next;
   }
   return i;
 }
 
 Status Getelem(LinkList L,int i,ElemType e){
  int p;
  LinkList q;
  q=L;
  if(i<1||i>ListLength(L))
     return ERROR;
    for(p=0;p<i;p++){
     q=q.next;
    }
    e=q.data;
    return OK;
 }
 
 
 void LocateElem(LinkList L,ElemTyp e){
  LinkList p;
  p=L.next;
  int j=1,k;
  while(p.next!=NULL){
  if(p.data==e){
  printf("该数据在此链表的位置为:%d",j);
  k=1;
  }
  p=p.next;
  j++;
 }
 if(k==0)
 printf("所查找的数据不存在");
 } 
 
 
 Status ListInsert(LinkList L,int i,ElemType e) // 算法2.9。不改变L
 { // 在带头结点的单链线性表L中第i个位置之前插入元素e
   int j=0;
   LinkList p=L,s;
   while(p&&j<i-1) // 寻找第i-1个结点
   {
     p=p->next;
     j++;
   }
   if(!p||j>i-1) // i小于1或者大于表长
     return ERROR;
   s=(LinkList)malloc(sizeof(LNode)); // 生成新结点
   s->data=e; // 插入L中
   s->next=p->next;
   p->next=s;
   return OK;
 }
 
 
  Status ListDelete(LinkList L,int i,int e) // 算法2.10。不改变L
 { // 在带头结点的单链线性表L中,删除第i个元素,并由e返回其值
   int j=0;
   LinkList p=L,q;
   while(p->next&&j<i-1) // 寻找第i个结点,并令p指向其前驱
   {
     p=p->next;
     j++;