链表删除语句第二个看不懂
两个方法中,第二个为什么 要 进行q = p->next ,感觉 多余,直接进行 p->next =q->next不行吗 p q...... -----> [ x | ] -----> [ x | ] -----> [ x | ] -----> ......
待删除
q = p->next q->next
^
p->next = q->next ---------------| //接过来啦~~ claws0n 发表于 2018-10-19 22:52
p q
...... -----> [ x | ] -----> [ x | ] -----> [ x | ] ...
删掉节点就是要让那个节点不被任何指针指向,所以要free指向那个节点的指针,但是要给那个指针七个名字,所以有 q = p->next 。这样说对吗 大可爱 发表于 2018-10-19 23:48
删掉节点就是要让那个节点不被任何指针指向,所以要free指向那个节点的指针,但是要给那个指针七个名字, ...
不是。待删除的一定有指针指向,否则如何针对改内存操作?
你要把后面的东西给接起来才是完整的链表,不然就断开了~~
p->next = q->next 就是把后面该接起来的部分交代以下 claws0n 发表于 2018-10-19 23:53
不是。待删除的一定有指针指向,否则如何针对改内存操作?
你要把后面的东西给接起来才是完整的链表,不 ...
这样。 free(r); p -> next ; 这样可不可以把r 所指向的结点删掉 ? 大可爱 发表于 2018-10-20 07:12
这样。 free(r); p -> next ; 这样可不可以把r 所指向的结点删掉 ?
可以啊,但是 p 怎么与 s 链接?这是在链表中常犯的错误
p->next 是 p 的 next,只是一个指针~~ claws0n 发表于 2018-10-20 09:34
可以啊,但是 p 怎么与 s 链接?这是在链表中常犯的错误
p->next 是 p 的 next,只是一个指针~~
写漏了
p->next =s ; 大可爱 发表于 2018-10-20 10:56
写漏了
p->next =s ;
对,但是你的 s 是怎么来的???就是 q->next 或者 p->next->next 呀。不然的话你得另外定义一个指针变量
Node * s = q->next; 不是一样的吗??比较不好看,所以不会那样写
页:
[1]