为什么struct不加结构名? SqList是什么意思

typedef struct
{
Elemtype data[MaxSize];
int length;
}SqList;

typedef的语法结构是 typedef A B,意思就是把A定义为B。
对结构体而言,完整的写法是 typedef struct A{} B; 各部分说明如下:
typedef 是关键字,
struct A 是类型A
{}中的内容是对struct A的具体说明
B 是定义成的目标类型,也就是说B和A的作用是一样的,当然,这种一样是在定义完后。
既然{}是对struct A的具体说明,那么在一些情况下A是可以省略的。
当{}中没有用到struct A时,A是可以省略的。就像这个题目中的写法一样,{}中没有使用struct A,所以typedef语句后,SqList完全可以起到结构体类型的作用。SqList st就能过说明st是一个如{}中定义的结构体类型。
但是,当{}中使用了struct A,那么A就不能省略。举例如下:
typedef struct A
{
int data;
struct A* p;
}LNode;
如果第一行的A省略不写,那么{}中的struct A* p就是一个未定义的类型(因为A前面有struct关键字,在编译时虽然编译器不会报错,但是无法正常创建链表),这时候,第一行的A最好不要省略。

因为是用typedef进行了命名,所以不加结构名也可以,后面都用SqList来代表这个结构
SqList sqlist就可以定义这个结构的变量了

我还想问为啥不直接把SqList写在A的位置