为什么这个代码不执行

void caulen(linklist head)
{
int len=0;
linklist p;
head=(linklist)malloc(sizeof(lnode));
p=(linklist)malloc(sizeof(lnode));
p=p->next;
while(p!=NULL)
{
len++;
}
printf("长度为%d",len);
}

你在输入数据的时候,调用这个函数了吗?或者应该就这个计算长度的放在输入函数中

你这个p啥也不是啊,就是一个结点而已,哪来的while循环啊

你确定进入while后不会死循环嘛?都没有退出条件

修改如下,供参考:

void caulen(linklist head)
{
    int len=0;
    linklist p = head;
    //head=(linklist)malloc(sizeof(lnode));
    //p=(linklist)malloc(sizeof(lnode));
    //p=p->next;
    while(p!=NULL)
    {
        len++;
        p = p->next;
    }
    printf("长度为%d",len);
}