关于单链表结构体定义结点时 LNode *LinkList的理解

typedef struct LNode{
    
    
	ElemType  data;	//数据域
	struct LNode *next;	//指针域
}LNode, *LinkList

先说结论,这个就可以直接理解为
在这里插入图片描述
第一个是便于定义变量的类型为LNode,如果没有使用typedef,定义时就需要写 struct LNode Lnode;
第二个是便于定义指向LNode这个类型的指针

其还有一个作用:
LNode * 一般强调的是返回的是一个结点
LinkList 一般强调的是这是一个单链表
在这里插入图片描述
比如在上面这个栗子中

举个栗子:
在表示一个单链表时,只需声明一个头指针L,指向单链表的第一个结点(也就是头结点)

Lnode *L //声明一个指向单链表第一个节点的指针
LinkList L //和上面功能相同

可以看到,很明显用LinkList使得代码可读性更强了。

typedef的作用就是为类型添加别名,可以增加代码的扩展性,特别是在有时候类型需要用通用的ElemType去泛指的时候,其就达到了一种解耦的效果,这里还需要注意的是其需要与结构体变量区分开来,结构体变量并不是定义的别名.

例如,对于这个代码

 struct LNode{
    
    
	ElemType  data;	//数据域
	struct LNode *next;	//指针域
}LNode

就等于 Struct LNode LNode; 等同于定义了一个LNode类型的变量,名为 LNode.

猜你喜欢

转载自blog.csdn.net/weixin_45870904/article/details/111655514