这几段代码我有点理解不了(数据结构c语言),求大神给我讲解一下。

在自学数据结构时遇到了困难,来求助大家了。

#define MAXSIZE 10000
typedef  struct
{
    char  no[20];
    char  name[50];
    float  price;
}Book;

typedef  struct
{
   Book  *elem;   //这个是定义了谁的指针?为什么这样定义?
   int  length;
}sqList

SqList  L;

Status  InitList(SqList  &L)//形参是结构体是怎么传递的,为什么L前面还有取地址符&;
{
   L.elem=new ElemType[MAXSIZE];//这句话是什么意思?
     if(!L.elem) exit(OVERFLOW);
     L.length=0;
     return OK;
}

谢谢

Book  *elem; 这个是Book(的数组)的指针,之所以用指针,因为这里动态根据length分配长度,所以不能用静态的数组写死长度。
Status  InitList(SqList  &L) 这里的&是C++的引用,不是取地址符。因为函数内修改L,要返回主程序,所以这里需要引用。
L.elem=new ElemType[MAXSIZE];,让L.elem这个指针指向动态分配的数组(长度是MAXSIZE)