大家好,又见面了,我是你们的朋友全栈君。
*next是指向下一个值的地址
而*Linklist是当前这个值的地址,只是这个值里有数据data,和下一个值的地址
就是说链表中,因为数据是随机储存的,所以地址不是连续的,要想读取下一个数,就要知道下一个数据的地址
不知道有没有看懂,表达能力不是很好
*Linklist相当于一个数组头指针,只是这个数组的元素是结构体
*next则是构成链表的一个基本元素,指向该结点下一个结点的地址
从某种意义上讲,*Linklist是指定了这段空间在内存中的位置(可以申请连续的结点空间),而*next则对结点进行了一定的空间排序
`
在括号外面定义的是结构体,意思就是我要定义一个结构体了,里面有什么什么数据,而在里面定义的*next结构体类型的指针,意思是,我定义的结构体每个结点里面有个指针指向的是结构体类型的数据,不是重新定义了。一个指针类型的成员是可以指向自己所在的结构体类型的数据的``
在大括号里的,是这个结构体的成员变量,后面的*Linklist是类型定义。
大括号里的是一个指针,变量名叫next,类型是struct Lnode*,链表的定义你应该知道吧,有一个指针域,指向了下一个节点的地址,就是这里的Lnode,当然,你也可以用void*来指,但是这样你就不能通过结构体类型来访问对应的成员了,而是用结构体的指针struct Lnode*,就不必操心怎么访问成员,直接用指针去->访问就行了,编译器会帮你做好处理。
而外面的那个*Linklist,是结构体定义的一部分,相当于
typedef struct Lnode{
...}Lnode;
typedef struct Lnode * Linklist;
在定义链表节点时就可以用Linklist 代替(struct Lnode *)了。
https://wenwen.sogou.com/z/q700690087.htm
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/144528.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...