表长为什么没有,难道是引用的问题?


#include<stdio.h>
#include<stdlib.h>
typedef struct Lnode{
    int data;
    struct Lnode *next;
}Lnode,*Linklist; 
//--------------------------------------------------------------//创建函数 
//单链表的创建(头插法)
 void CreateLB1(Linklist &L){        
     Linklist p;
     int n,num; 
     L = (Linklist)malloc(sizeof(Lnode));  //创建链表的头节点 
     L->next=NULL;
     printf("请输入要创建的元素个数: ");
    int x=scanf("%d",&n);
    if(x==0){
        printf("输入元素类型错误!!");
    }
    for(int i=0;i<n;i++)
    {
        printf("请输入第%d个元素:",i+1);
        int x=scanf("%d",&num);
        if(x==0){
        printf("输入元素类型错误!!");
    }
        p = (Linklist)malloc(sizeof(Lnode));
        p->data = num;
        p->next = L->next;
        L->next = p;
    }
    printf("创建成功!\n"); 
}
//--------------------------------------------------------------//遍历函数 
 //单链表的遍历
 void Show(Lnode *  L){
      
     Lnode * p;
     p=L->next;
     while(p!=NULL){
         printf("%d    ",p->data);
         p=p->next;
     }
     printf("遍历完成!\n");
 } 
 //求表长
 int Length(Linklist L){
     int j=4;
     Lnode *p=L->next;
    while(p!=NULL){
     p=p->next;
     j++;
    }
     return j;
 } 
 //查找结点
 int Search(Linklist L){
     Lnode *p=L;
     int i=1;
     int a=0;
     int j=0;
     printf("请输入需要查找的元素:"); 
     scanf("%d",&a); 
     while(p->next){
         p=p->next;
         if(a==p->data){
             j=i;
             printf("找到与%d相等的元素,位置为:%d",a,j);
             return 1;
         }
        i++; 
     }
     printf("未找到!!");
     return -1;
 } 
int main(){
    Lnode * L;
    CreateLB1(L);
   Show(L);
   printf("表长为:",Length(L));
   Search(L);
}


![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/040553318346121.png "#left")



 int j=4;  这里错了