typedef struct Lnode{
elemtype data;//数据域
struct Lnode *next;//指针域
}Lnode,*Linklist
Lnode,*Linklist是这个结构体的别名,这是为了提高可读性。
Lnode *,Linklist二者本质上是等价的。
习惯用linklist定义单链表,强调的是某个单链表的头指针。
lnode *定义单链表中任意结点的指针变量。
比如,linklist l,那么l是单链表的头指针(为什么是指针,因为linklist本身带有*)。而lnode *p,p指的是单链表中某个结点的指针。
(ps:这里已经有*,那么在使用linklist定义结点指针就不用加*,但是lnode要加*)。
struct Lnode *next是因为单链表的指针域,指向的是和当前节点一样的数据类型,也是一个有着两部分(指针域和数据域)的结点,所以也定义为struct Lnode类型的数据,并且这个数据是指针类型的,所以前边加*。简单说是指向结点的指针类型。
既有*next又有*linklist是因为,前后为了把所有结点连成一个整体,后者侧重于对每一个结点进行操作。
ps:elemtype data这里,data的数据类型待用户自己定义,可以是之前说过的图书类型Book,也可以是int等等。
还有结点变量和指针变量不一样。
结点变量:结点的名称。
指针变量:指向某结点的指针变量。