数据结构链表的结构体定义的理解(C语言)

 //此理解有参考数据结构的教材和一些博主的文章;


1、先补充一下typedef在此处的基本用法:

typedef可用来建立已经定义好的数据类型的别名。形式为:typedef  已有变量名  别名;

通俗的来说就是给已有数据类型另起一个名字,如:

typedef int number;//把number抽象为int类型
number a=10;//对number类型(int)的变量进行赋值

//有关typedef的其它用法和详解此处不做说明


2、看下面代码 :

​typedef int ElemType;//定义一个整型的ElemType类型
typedef struct Node
{
ElemType data;//节点数据域
struct Node*next;//节点指针域
}Node,*LinkList; 

​/*问:第五行中‘struct Node*next;’为什么要这样写?能不能写成int*next?*/
/*答:不行,next是指向下一个Node,而Node是struct Node类型。int *next 只能指向int,而不能指向Node。*/​

第二行中typedef后面的所有,即‘struct Node’属于已有变量名 。{}后面的Node和LinkList都属于别名,别名也可以不写{}后面,可以写作下面这样:


​typedef int ElemType;//定义一个整型的ElemType类型
typedef struct Node
{
ElemType data;//节点数据域
struct Node*next;//节点指针域
};
typedef struct Node Node;//'struct Node'是已有变量名,'Node'是别名
typedef struct Node*LinkList;//'struct Node*'是已有变量名,'LinkList'是别名

只是相比这种写法,第一种写法 更简洁优雅、可读性更高。两者是等效的,定义指向节点的指针时都可以直接写:

LinkList L;//定义指向结构体的指针变量L

Node的对象是结构体;

LinkList的对象是结构体指针;


 希望能有所帮助,欢迎指出错误和不足之处。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值