首页 > 试题广场 >

在双向链表存储结构中,删除p所指的结点时需修改指针()?

[单选题]
在双向链表存储结构中, 删除p所指的结点时需修改指针()?
  • p->next->prior=p->prior;p->prior->next=p->next;
  • p->next=p->next->next;p->next->prior=p;
  • p->prior->next=p;p->prior=p->prior->prior;
  • p->prior=p->next->next;p->next=p->prior->prior;
一定要注意区分,弄清楚指针的形态和指向

发表于 2016-04-27 14:09:57 回复(0)
删除p所指的结点
应该是B答案咧,A是删除p节点...
发表于 2015-09-17 17:39:18 回复(3)
A 项分号前后应该调换一下。
1.p->prior->next=p->next;
2.p->next->prior=p->prior;

编辑于 2016-03-15 09:01:41 回复(5)

prior

o

next

prior

p

next

prior

q

next

说明:p->prior = o   p->next = q(=”代表指向,不代表赋值)

p->prior->next = o->next

删除节点两步走:

q->prior (p->next->prior) = o(p->prior); //让q的前指针指向p的前节点

o->next(p->prior->next) = q(p->next);  //o的后指针指向p的后节点(把原来的p跳了)

即:让p的前后节点连在一起

编辑于 2020-06-15 10:40:44 回复(0)
注意,是删除p所指的结点,不是p所指的结点的下一个结点。
发表于 2017-04-01 18:49:50 回复(0)
小技巧:看首尾
发表于 2021-09-13 13:20:12 回复(0)
无pp无真相

双向链表的删除操作

算法描述:欲删除双向链表中的第i个结点,则指针的变化情况如图2.17所示。

int DlinkDel(DoubleList L,int i,ElemType *e)

{

 DNode *p;

 /*首先检查待插入的位置i是否合法(实现方法同单链表的删除操作)*/

 /*若位置i合法,则让指针p指向它*/

 *e=p->prior->next=p->next;

 p->next->prior->p=p->prior;

 free(p);

 return TRUE;

}


参考:
http://blog.csdn.net/csdanca11/article/details/7173856

发表于 2015-01-28 16:05:54 回复(0)
删除p所指向的结点,就是删除p结点(通俗来讲)
发表于 2023-10-31 09:51:42 回复(0)
没理解错的话选b的朋友可能是认为p是节点,但这里p应该是指针。
发表于 2022-04-22 15:51:48 回复(0)
链表的插入和删除一般要找到操作位置的前一个位置和后一个位置,这样可以方便进行插入和删除操作。
发表于 2016-03-13 22:07:59 回复(0)
A
双向链表的基本操作
发表于 2015-01-26 20:16:15 回复(0)
答案: A
基础题
发表于 2015-01-16 09:37:40 回复(0)