C语言截结构体指针中的变量又是另一个结构体指针,怎么用,代码运行不了

#include
#include
#include
#include
#define LIST_INIT_SIZE 100//线性表存储空间的初始分配量
#define LISTINCREMENT 10//线性表存储空间的分配增量

typedef struct
{
int No;
char name[10];
}Student;

typedef struct
{
Student *elem;//存储空间基址
int length;//当前啊长度
int listsize;//当前分配的存储容量
}SqList;

int Initlist_Sq(SqList *L)
{
//构建一个空的线性表
printf("boy\n");
L->elem = (Student *)malloc(LIST_INIT_SIZE*sizeof(Student));
if(!L->elem)
{
printf("here\n");
return -2;
}

L->length = 0;
L->listsize = LIST_INIT_SIZE;
return 0;

}
int main()
{
SqList *L;
int k = Initlist_Sq(L);
int i;
int n;

    printf("there\n");
    if(k == -2) return -2;
    scanf("%d",&n);
    for(i = 0; i<n; i++)
    {
        L->elem[i].No=i;
        gets(L->elem[i].name);
    }

    return 0;
}