纯C语言求纠正,由于受编译环境限制,不能用c++的引用“&”符号

纯C语言求改正,由于受编译环境限制,不能用c++的引用“&”符号
#define OK 1 
typedef struct LNode{ 
 int data; 
 struct LNode *next; 
}LNode,LinkList;////////////////////here 
#include <stdlib.h> 
#include <stdio.h> 
int CreateListR_Link(LinkList *L,int elem[],int n); 
int LengthList_Link(LinkList *L); 
int CreateListR_Link(LinkList *L,int elem[],int n){ 
 LNode *p,*q; 
 int i; 
 L=(LinkList *)malloc(sizeof(LinkList)); 
 for(i=0;i<n;i++){ 
  p=L; 
  q=(LNode *)malloc(sizeof(LNode)); 
  q->data=elem[i]; 
  printf("%d\t",q->data); 
  p->next=q; 
  p=q; 
 } 
 p->next=NULL; 
 return OK; 

int LengthList_Link(LinkList *L){//会出错,为什么啊? 
 char cc=getchar(); 
 LNode *p=L; 
 cc=getchar(); 
 p=p->next; 
 int n=0; 
 cc=getchar(); 
 while(p!=NULL){ 
  n++; 
  p=p->next; 
 } 
 return n; 

int main(){ 
 LinkList LL; 
 int i; 
 int e,a[5]; 
 for(i=0;i<5;i++) a[i]=11+i; 
 CreateListR_Link(&LL,a,5); 
 printf("%d\n",LengthList_Link(&LL)); 
 return 0; 
};
------解决方案--------------------
这样?纯C语言求纠正,由于受编译环境限制,不能用c++的引用“&”符号
#include <stdlib.h>
#include <stdio.h>

typedef struct LNode
{
int data;
struct LNode *next;
}LNode,LinkList;

LinkList* CreateListR_Link(int elem[],int n);
int LengthList_Link(LinkList *L);

LinkList* CreateListR_Link(int elem[],int n)
{
LNode *head,*p,*q;
int i=0;
head=p=(LinkList *)malloc(sizeof(LinkList));
p->data=elem[i];
printf("%d\t",p->data);
for(i++;i<n;i++)
{
q=(LNode *)malloc(sizeof(LNode));
q->data=elem[i];
printf("%d\t",q->data);
p->next=q;
p=q;
}
p->next=NULL;
return head;
}

int LengthList_Link(LinkList *p)
{
int n=0;
while(p!=NULL)
{
n++;
p=p->next;
}
return n;
}

int main()
{
LinkList* LL;
int i;
int a[5];
for(i=0;i<5;i++)
a[i]=11+i;
LL=CreateListR_Link(a,5);
printf("\nnode num:%3d\n",LengthList_Link(LL));
return 0;
};