算法问题,单链表

来源:百度知道 编辑:UC知道 时间:2024/06/05 11:22:28
4. 已知一个结点x属于单链表中的结点,指针p指向了x结点,指针q指向结点x的前驱结点,则从单链表中删除结点x的操作为( )
sNode定义为 struct sNode { int data; sNode *next;};
A. p->next=q->next; delete p B. q->next=p->next; delete p
C. p->next=q->next; delete q; D. q->next=p->next; delete p;
答案是什么,你的理由?
补充2:为什么不是选D?
我理解错了?
q->next == p?

刚才回答错了,应该是d,c是错的,不能delete q,因为p才是现在不需要的接点
改变的只能是p的前驱结点的next指针。

如下的链表:
[a]=>[x]=>[b]
p指向a,q指向x
若要删除x
应该先将a的next指针指向x的后续(b)
即p->next=q->next;
再将x删除
即delete p;

答案是B和D