关于链表节点的使用

链表中每个节点都是一个结构体,上面程序中now是一个指向分配有结构体大小内存的指针吧,是利用指针操作运算符'->'操作节点元素吗?初学者,还望赐教!... 链表中每个节点都是一个结构体,上面程序中now是一个指向分配有结构体大小内存的指针吧,是利用指针操作运算符'->'操作节点元素吗?
初学者,还望赐教!
展开
 我来答
岁月哪曾斑驳
推荐于2018-03-20 · TA获得超过742个赞
知道小有建树答主
回答量:278
采纳率:50%
帮助的人:355万
展开全部
题中程序用了类型别名方法typedef,实际上now的定义语句完全展开可写成:
struct data *now = NULL;
可以很明显看出now的类型是自定义结构体data的指针,C语言中指针操作运算符'->'可以访问指针所指向的结构体内部成员。题中横线句子访问成员next,类型也是自定义结构体data的指针,将它的值赋成head。
本题示例片段大体意思是演示空链表的插入一个节点,head为头指针,now为待插入节点的指针,初始都为空。因为只插入了一个节点,所以将现有节点now的下一个位置指定为空。然后,头指针指向新插入节点,再对节点元素赋值。

PS:这里是吐槽,可以忽略!
now->next指空的操作很不规范,应该是:
now->next= NULL;
虽然结果没有区别,但是逻辑概念上易引起误读,让人误以为是循环链表。同时,最下面两行语句最好做个调换,让程序易读性更高。至于其他的合法性判断和异常处理,就先不说了,等学到的时候再自己写问题不大。
最后要说的是,C语言中指针没有自动维护机制,尤其当涉及动态内存管理时请一定规范和慎重。当然,如果不是想做程序员的话大可无视,这么写玩具或者示例程序无伤大雅。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式