数据结构一道选择题

已知有一个链表为双向循环链表的结构(如下),则在q指针指向的结点后面插入一个p结点,需要修改的指针为:
在这里插入图片描述

  • [A] p->llink=q; p->rlink=q-rlink ; q->rlink=p; q->llink=p;
  • [B] p->llink=q; p->rlink=q-rlink ; q->rlink=p; q->rlink->llink=p;
  • [C] p->llink=q; p->rlink=q-rlink ; q->rlink=p; p->rlink->llink=p;
  • [D] p->llink=q; p->rlink=q-rlink ; q->rlink=p; p->llink->llink=p;

解析:选择C
这里区分B,C的差异:注意到四个选项的前三个指针修改都一样。根据画出结点图进行连接后,一开始会错误的选择B,认为q->rlink->llink=p对的,以为当前p结点后继结点的前驱就是p结点。
但却没有注意到:这里有个指针q->rlink = p,q->rlink指针被修改了。因此q->rlink->llink = p->llink,B选项实际是:p->llink=p,是不成立的。
而C:p->llink实际上有上面的式子:p->rlink=q-rlink,故p->rlink-llink=p 转化为
q->rlink-llink=p,和画出来的连接图一致。

ps:需要注意到指针在连接对应的rlink,llink,需要观察前面是否用到的指针已经被修改了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值