今天在复习数据结构的时候,对单链表的结构体定义有了新的理解。
书上结构体定义为:
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode, *LinkList;
先说为什么定义指针next的时候前面是LNode类型,这是因为如果定义为ElemType *next,指针指向的下一个节点,可以访问数据域,但是没法访问指针域,所以要把指针设置为LNode结构体类型;
那么为什么要加上struct呢,这是结构体的自引用,因为如果不加上struct的话,编译器运行到LNode *next这里的时候,LNode还没有定义完全(必须运行到*LinkList;这里才可以),所以要加上struct;
最后说一下结构体的定义,因为如int这种类型是不可分割的,我们定义结构体这种复合型的数据类型来包含多种数据类型。比如可以定义一个people类型,包含height,weight,age等多个基本数据类型。