鱼C论坛

 找回密码
 立即注册
查看: 1152|回复: 7

[已解决]链表删除语句第二个看不懂

[复制链接]
发表于 2018-10-19 22:09:44 | 显示全部楼层 |阅读模式

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

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

x
两个方法中,第二个为什么 要 进行q = p->next   ,感觉 多余,直接进行 p->next =q->next  不行吗
最佳答案
2018-10-20 11:08:55

对,但是你的 s 是怎么来的???就是 q->next 或者 p->next->next 呀。不然的话你得另外定义一个指针变量
Node * s = q->next; 不是一样的吗??比较不好看,所以不会那样写
捕获.PNG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-19 22:52:20 | 显示全部楼层
                    p                   q
...... -----> [ x |   ] -----> [ x |   ] -----> [ x |   ] -----> ......
                                    待删除
                                   q = p->next     q->next
                                                             ^
                p->next = q->next ---------------|    //接过来啦~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-19 23:48:10 | 显示全部楼层
claws0n 发表于 2018-10-19 22:52
p                   q
...... -----> [ x |   ] -----> [ x |   ] -----> [ x |   ] ...

删掉节点就是要让那个节点不被任何指针指向,所以要free指向那个节点的指针,但是要给那个指针七个名字,所以  有 q = p->next 。这样说对吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-19 23:53:46 | 显示全部楼层
大可爱 发表于 2018-10-19 23:48
删掉节点就是要让那个节点不被任何指针指向,所以要free指向那个节点的指针,但是要给那个指针七个名字, ...

不是。待删除的一定有指针指向,否则如何针对改内存操作?
你要把后面的东西给接起来才是完整的链表,不然就断开了~~
p->next = q->next 就是把后面该接起来的部分交代以下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-20 07:12:53 | 显示全部楼层
claws0n 发表于 2018-10-19 23:53
不是。待删除的一定有指针指向,否则如何针对改内存操作?
你要把后面的东西给接起来才是完整的链表,不 ...

这样。 free(r); p -> next ; 这样可不可以把r 所指向的结点删掉 ?
1122609139.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-20 09:34:21 | 显示全部楼层
大可爱 发表于 2018-10-20 07:12
这样。 free(r); p -> next ; 这样可不可以把r 所指向的结点删掉 ?

可以啊,但是 p 怎么与 s 链接?这是在链表中常犯的错误
p->next 是 p 的 next,只是一个指针~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-20 10:56:34 | 显示全部楼层
claws0n 发表于 2018-10-20 09:34
可以啊,但是 p 怎么与 s 链接?这是在链表中常犯的错误
p->next 是 p 的 next,只是一个指针~~

写漏了
p->next =s ;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-20 11:08:55 | 显示全部楼层    本楼为最佳答案   

对,但是你的 s 是怎么来的???就是 q->next 或者 p->next->next 呀。不然的话你得另外定义一个指针变量
Node * s = q->next; 不是一样的吗??比较不好看,所以不会那样写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 15:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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