哪位数据结构大神能帮我解答一下这道题,这道题我在网上搜了答案有选C的有选D的,哪位亲能给我解释一下。

假设双链表结点的类型如下:typedefstructlinknode{intdata;//数据域structlinknode*llink;//指向前趋结点的指针域stru... 假设双链表结点的类型如下:
typedef struct linknode{
int data; //数据域
struct linknode *llink; //指向前趋结点的指针域
struct linknode *rlink; //指向后继结点的指针域
}bnode
现将一个q 所指新结点作为非空双向链表中的p 所指结点的前趋结点插入到该双链表中,能正确完成此要求的语句段是( )。
A、q->rlink=p;q->llink=p->llink;p->llink=q;p->llink->rlink=q;
B、p->llink=q;q->rlink=p;p->llink->rlink=q;q->llink=p->llink
C、q->llink=p->rlink;q->rlink=p;p->llink->rlink=q;p->llink=q;
D、以上都不对
展开
 我来答
夜神月YOONA
2012-11-22 · TA获得超过339个赞
知道小有建树答主
回答量:219
采纳率:0%
帮助的人:250万
展开全部
题目的意思其实就是将q插入结点 p->llink 和 p 之间
先接好左向的: q->llink=p->llink, p->llink=q
再接好右向的: q->rlink=p, q->llink->rlink=q;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
屋石
2012-11-21 · TA获得超过5350个赞
知道大有可为答主
回答量:1909
采纳率:86%
帮助的人:886万
展开全部
答案是D,在双向链表中某结点前插入结点,要注意该结点原有的前驱不能丢掉。
追问
谢谢你,能告诉我这道题正确的应怎么写吗
追答
q->rlink=p;q->llink=p->llink;p->llink=q;q->llink->rlink=q;答案有多种
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jimmy19871117
2012-11-21 · 超过45用户采纳过TA的回答
知道小有建树答主
回答量:211
采纳率:0%
帮助的人:130万
展开全部
A
追问
能具体解释一下吗
追答
q->rlink=p;q->llink=p->llink;p->llink=q;p->llink->rlink=q;
其实也不对
q->rlink=p;q->llink=p->llink;p->llink->rlink=q;p->llink=q;
才是对的

建议画画图

但是要注意,先把q这个新节点的指针域先搞定,再改老的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式