关于链表节点的使用
链表中每个节点都是一个结构体,上面程序中now是一个指向分配有结构体大小内存的指针吧,是利用指针操作运算符'->'操作节点元素吗?初学者,还望赐教!...
链表中每个节点都是一个结构体,上面程序中now是一个指向分配有结构体大小内存的指针吧,是利用指针操作运算符'->'操作节点元素吗?
初学者,还望赐教! 展开
初学者,还望赐教! 展开
1个回答
展开全部
题中程序用了类型别名方法typedef,实际上now的定义语句完全展开可写成:
struct data *now = NULL;
可以很明显看出now的类型是自定义结构体data的指针,C语言中指针操作运算符'->'可以访问指针所指向的结构体内部成员。题中横线句子访问成员next,类型也是自定义结构体data的指针,将它的值赋成head。
本题示例片段大体意思是演示空链表的插入一个节点,head为头指针,now为待插入节点的指针,初始都为空。因为只插入了一个节点,所以将现有节点now的下一个位置指定为空。然后,头指针指向新插入节点,再对节点元素赋值。
PS:这里是吐槽,可以忽略!
now->next指空的操作很不规范,应该是:
now->next= NULL;
虽然结果没有区别,但是逻辑概念上易引起误读,让人误以为是循环链表。同时,最下面两行语句最好做个调换,让程序易读性更高。至于其他的合法性判断和异常处理,就先不说了,等学到的时候再自己写问题不大。
最后要说的是,C语言中指针没有自动维护机制,尤其当涉及动态内存管理时请一定规范和慎重。当然,如果不是想做程序员的话大可无视,这么写玩具或者示例程序无伤大雅。
struct data *now = NULL;
可以很明显看出now的类型是自定义结构体data的指针,C语言中指针操作运算符'->'可以访问指针所指向的结构体内部成员。题中横线句子访问成员next,类型也是自定义结构体data的指针,将它的值赋成head。
本题示例片段大体意思是演示空链表的插入一个节点,head为头指针,now为待插入节点的指针,初始都为空。因为只插入了一个节点,所以将现有节点now的下一个位置指定为空。然后,头指针指向新插入节点,再对节点元素赋值。
PS:这里是吐槽,可以忽略!
now->next指空的操作很不规范,应该是:
now->next= NULL;
虽然结果没有区别,但是逻辑概念上易引起误读,让人误以为是循环链表。同时,最下面两行语句最好做个调换,让程序易读性更高。至于其他的合法性判断和异常处理,就先不说了,等学到的时候再自己写问题不大。
最后要说的是,C语言中指针没有自动维护机制,尤其当涉及动态内存管理时请一定规范和慎重。当然,如果不是想做程序员的话大可无视,这么写玩具或者示例程序无伤大雅。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询