首页 > 试题广场 >

设指针变量 p 指向单链表中结点 A ,若删除单链表中结点

[单选题]

设指针变量 p 指向单链表中结点 A ,若删除单链表中结点 A ,则需要修改指针的操作序列为( )。

  • q=p->next;p->data=q->data;p->next=q->next;free(q);
  • q=p->next;q->data=p->data;p->next=q->next;free(q);
  • q=p->next;p->next=q->next;free(q);
  • q=p->next;p->data=q->data;free(q);
发表于 2017-07-25 22:12:08 回复(13)
李代桃僵,实际删除的是A的后继结点B:先将A的后继结点B复制到A中,且A的后继改为原来B的后继,再将B删除。作用等同于删除A。
发表于 2017-07-15 15:05:07 回复(1)

因为找不到A前驱结点,直接删A就断开了,所以采用用后继结点将其覆盖,覆盖后后继结点就无用了,删除即可。

发表于 2017-10-18 20:26:03 回复(0)

这是道垃圾题目。毫无意义的题目。首先工程上永远不会有这种删除操作。其次链表考察题目重点应该是边缘条件,比如我这个A是尾节点咋办?做链表题目大家肯定都会考虑假如头节点为空咋办?而且我们默认的删除操作只是在内存上进行,我们不应关心节点所存储的值是多少,而且实际上对节点存储值进行操作是很危险的行为。数据结构题目玩的应该是内存,而不是这样的所谓奇技淫巧。

发表于 2018-11-16 09:29:22 回复(1)
发表于 2018-10-23 11:46:04 回复(4)
我想问,如果节点A恰好是尾节点呢???
发表于 2017-08-19 11:58:23 回复(3)
“设指针变量 p 指向单链表中结点 A” 这句话很有迷惑性,从答案来看A指的是p,而不是p->next
发表于 2017-12-09 15:49:53 回复(1)

分析:首先用指针变量q指向结点A的后继结点B,然后将结点B的值复制到结点A中,最后删除结点B

发表于 2017-05-17 02:01:15 回复(9)
李代桃僵,实际删除的是A的后继结点B:先将A的后继结点B复制到A中,且A的后继改为原来B的后继,再将B删除。作用等同于删除A。
发表于 2022-03-01 15:48:37 回复(0)
因为这道题要删除的是p指向的当前节点 所以没有办法直接用替换指针域来进行操作 所以用B 先把A先覆盖了 然后在释放B就可以了
发表于 2022-04-12 10:27:38 回复(0)
发表于 2022-12-25 20:59:09 回复(0)
不方便找到前一个节点的地址 那就只能将此节点变为前一个节点 使前后两值互换
发表于 2022-03-11 11:42:55 回复(0)
这一道题目分两种情况哇
一种是p是独立的指针型节点指向节点A
另一种是p作为节点里的next指针指向A
发表于 2020-10-05 19:45:34 回复(1)
但是这种方法还是有不足之处的,如果结点A为尾结点呢?
发表于 2019-10-27 15:47:54 回复(0)
这道题错了,指针p指向A,那么p就代表A,哪来的p->next
发表于 2018-09-10 09:07:28 回复(1)
需要进行删除的是A节点,但是只知道A节点的指针。 删除一个节点需要知道他的前驱节点的指针 所以这个时候并没有直接的删除A节点。 二十几将A节点的后继节点的值赋值给A,然后将A的后继节点删除,这样的话就不会导致断链。 但是这样有一个问题。就是当要删除的A节点为尾节点的时候,没有他的下一个节点了,直接将这个释放,但是他的前驱的那个也要置为🈳
发表于 2023-05-31 11:11:55 回复(0)
为什么一定要p的data变成q的data?
编辑于 2024-01-10 12:55:31 回复(0)
请问C为何不可呢
发表于 2023-06-06 20:55:13 回复(0)
题目都感觉没有说清楚。。。。评论区一大堆自己定义的abc。。。。 什么李代桃僵?呃呃呃
发表于 2023-02-07 23:56:53 回复(0)
创建一个新结点q,指向删除结点的下一个位置。再让删除结点的data指向新节点q的data,让删除结点的next指向新节点的next(相当于让删除结点变成了他下一个结点),最后释放新节点q的内存空间(因为是临时建立的,需要释放内存空间防止内存泄漏)
发表于 2022-04-19 23:21:13 回复(0)