鱼C论坛

 找回密码
 立即注册
查看: 1366|回复: 6

[已解决]单链表问题

[复制链接]
发表于 2018-10-8 18:18:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
很懵
最佳答案
2018-10-8 18:40:26

struct Book *ptr = NULL;
[  data  |  next  ] -----> [  data  |  next  ] -----> ...... -----> [  data  |  next  ] -----> [ NULL ]
        Head 是第一个节点,就是指针 ptr
不是
[  Head  ] -----> [  data  |  next  ]
很多数据结构的书都是把链表写成你给的方式,但是可以说实际的状况是这样。因为你定义的函数是 void,所以用二级指针才能对头指针进行修改。如果你是 struct Book addBook(struct Book *ptr),结构体型的函数,就是一级指针而已。类型不一样,调用的方式也不一样,但是都是对第一个节点操作,以后也许会遇到~
q2.png
q1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-8 18:19:38 | 显示全部楼层
程序图
22.png
11.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-8 18:40:26 | 显示全部楼层    本楼为最佳答案   

struct Book *ptr = NULL;
[  data  |  next  ] -----> [  data  |  next  ] -----> ...... -----> [  data  |  next  ] -----> [ NULL ]
        Head 是第一个节点,就是指针 ptr
不是
[  Head  ] -----> [  data  |  next  ]
很多数据结构的书都是把链表写成你给的方式,但是可以说实际的状况是这样。因为你定义的函数是 void,所以用二级指针才能对头指针进行修改。如果你是 struct Book addBook(struct Book *ptr),结构体型的函数,就是一级指针而已。类型不一样,调用的方式也不一样,但是都是对第一个节点操作,以后也许会遇到~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-8 18:56:04 | 显示全部楼层
本帖最后由 风骚的小胖子。 于 2018-10-8 18:58 编辑
claws0n 发表于 2018-10-8 18:40
struct Book *ptr = NULL;
[  data  |  next  ] -----> [  data  |  next  ] -----> ...... -----> [  d ...


那如何调取第一个节点的指针域指向NULL?
ptr->next=NULL?
但是这种方法是结构指针指向结构体变量后才能用啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-8 19:20:07 | 显示全部楼层
风骚的小胖子。 发表于 2018-10-8 18:56
那如何调取第一个节点的指针域指向NULL?
ptr->next=NULL?
但是这种方法是结构指针指向结构体变量后 ...

不需要。一开始是空链表,本身就指向 NULL,你调用函数的时候就会添加一个元素,然后就解决了。
  Head     // struct Book *ptr = NULL;
[ NULL ]

p = ...malloc...
*ptr = p;
p->next = NULL;
   head = p
[ data | next] -----> [ NULL ]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-8 21:08:11 | 显示全部楼层
claws0n 发表于 2018-10-8 19:20
不需要。一开始是空链表,本身就指向 NULL,你调用函数的时候就会添加一个元素,然后就解决了。
  Head  ...

struct Book *ptr = NULL
能把这句话给我深度剖析下吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-8 21:24:01 | 显示全部楼层
风骚的小胖子。 发表于 2018-10-8 21:08
struct Book *ptr = NULL
能把这句话给我深度剖析下吗

int a = 5; int *p = &a; //一般上是这样的
*p = 5; //可以对指针进行解引用
int *p2 = NULL; //不管参考什么类型,指针都可以指向 NULL。这样的指针叫空指针,避免野指针。
*p2; //空指针不能被解引用,会报错。空指针是一种保护措施。如果这个指针暂时没有用到,就让它成为空指针。
野指针……以后再谈,与内存泄漏有关
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-30 12:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表