关于顺序表嵌套结构体 的有关问题

关于顺序表嵌套结构体 的问题
我想要用结构体作为顺序表的元素
代码如下 编译的时候没错 但是运行时 输入数据就出错了
本人不才 不知道有什么错 请大神指出



#include <stdio.h>
#define MAXSIZE 100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
typedef int ElemType;
typedef struct Student{
    char no[8];   //8位学号
    char name[20]; //姓名
    int price;     //成绩
}Stu;
typedef struct{
Student* Stu;
int length;
}Seqlist;//定义Seq这个新的数据类型
void creat(Seqlist &L)
{
int a;
printf("请输入要创建的元素的个数:\t");
scanf("%d",&a);
for(int i=0;i<a;i++)
{
printf("请输入第%d个学生学号:\t",i+1);
scanf("%s",&L.Stu[i].no);
printf("请输入第%d个学生姓名:\t",i+1);
scanf("%s",&L.Stu[i].name);
printf("请输入第%d个学生成绩:\t",i+1);
scanf("%d",&L.Stu[i].price);
L.length++;
}
}
void show(Seqlist &L)
{
int i;
printf("线性表中的学生信息为:\n");
for(i=0;i<L.length;i++)
{
printf("第%d个学生学号:%s\n",i+1,(L.Stu[i]).no);
printf("第%d个学生姓名:%s\n",i+1,(L.Stu[i]).name);
printf("第%d个学生成绩:%d\n",i+1,(L.Stu[i]).price);
}
}
void creat(Seqlist &L);//建立线性表
void show(Seqlist &L);//显示线性表
int main()
{
Seqlist L;
L.length=0;//初始化线性表的长度为0
creat(L);
show(L);
return 0;
}

------解决方案--------------------
typedef struct{
Student* Stu;
int length;
}Seqlist;//定义Seq这个新的数据类型
Seqlist结构体成员Stu是一个指针类型,
这里的Stu没有分配内存空间的,所以给他取地址赋值出错的!

void creat(Seqlist &L)
{
int a;
printf("请输入要创建的元素的个数:\t");
scanf("%d",&a);
//这里加上给他动态的分配内存空间
L.Stu = (Student *)malloc(sizeof(Student) * a);

for(int i=0;i<a;i++)
{
printf("请输入第%d个学生学号:\t",i+1);
//对于字符串,就不用取地址了,数组名就是首地址
scanf("%s",L.Stu[i].no);
printf("请输入第%d个学生姓名:\t",i+1);
scanf("%s",L.Stu[i].name);
printf("请输入第%d个学生成绩:\t",i+1);
scanf("%d",&L.Stu[i].price);
L.length++;
}
}