单链表为什么插入了后没反应

#include<stdio.h>
#include<stdlib.h>
typedef struct xxi
{
char xhao[10];
char xin[30];
int nian;
int fen;
}xx;
typedef struct lian
{
xx data;
struct lian* next;
}lian;
//初始化
void chushi(lian* P)
{
P =(lian*) malloc(sizeof(lian));
if (P == NULL)
return;
P->next = NULL;
}
//创建节点
lian* jie(xx op)
{
lian* S = (lian*)malloc(sizeof(lian));
if (S == NULL)
return NULL;
S->data = op;
S->next = NULL;
return S;
}
void cha(lian* T)
{
xx p;
lian* od =T;
printf("请输入学生的信息(学号,姓名,年龄,分数):");
scanf_s("%s%s%d%d", p.xhao, p.xin,&p.nian, &p.fen);
lian* kl = jie(p);

if (kl == NULL)
    return;
while (od->next)
{
    od = od->next;
}
od->next = kl;

}
void bian(lian* T)
{
lian* as = T->next;
if (as == NULL)
return;
while (as != NULL)
{
printf("%s\t%s\t%d\t%d\n", as->data.xhao, as->data.xin, as->data.nian, as->data.fen);
as = as->next;
}
}
int main()
{
lian jk;
chushi(&jk);
cha(&jk);
bian(&jk);
return 0;
}

改动处见注释,供参考:

#include<stdio.h>
#include<stdlib.h>
typedef struct xxi
{
    char xhao[10];
    char xin[30];
    int  nian;
    int  fen;
}xx;
typedef struct _lian
{
    xx data;
    struct _lian* next;
}lian;
//初始化
void chushi(lian* P) //修改
{
    //P = (lian*)malloc(sizeof(lian)); //修改
    //if (P == NULL)                   //修改
    //    return;                        //修改
    P->next = NULL;
}
//创建节点
lian* jie(xx op)
{
    lian* S = (lian*)malloc(sizeof(lian));
    if (S == NULL)
        return NULL;
    S->data = op;
    S->next = NULL;
    return S;
}
void cha(lian* T)
{
    xx p;
    lian* od = T;
    printf("请输入学生的信息(学号,姓名,年龄,分数):");
    scanf_s("%s%s%d%d", p.xhao, 10, p.xin, 30, &p.nian, &p.fen);
    //scanf_s("%s%s%d%d", p.xhao, p.xin, &p.nian, &p.fen); //修改
    lian* kl = jie(p); 
    if (kl == NULL)
        return;
    while (od->next)
    {
        od = od->next;
    }
    od->next = kl;
}
void bian(lian* T)
{
    lian* as = T->next;
    if (as == NULL)
        return;
    while (as != NULL)
    {
        printf("%s\t%s\t%d\t%d\n", as->data.xhao, 
            as->data.xin, as->data.nian, as->data.fen);
        as = as->next;
    }
}
int main()
{
    lian jk;
    chushi(&jk);
    cha(&jk);
    cha(&jk);
    cha(&jk);
    bian(&jk);
    return 0;
}