多元复合函数求导例题:问一道数据结构的一道题目,大家帮帮我

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/26 05:38:01
1. 双向链表中有两个指针域,llink和rlink,分别指回前驱及后继,设p指向链表中的一个结点,q指向一待插入结点,现要求在p前插入q,则正确的插入为( )

A. p^.llink:=q; q^.rlink:=p; p^.llink^.rlink:=q; q^.llink:=p^.llink;

B. q^.llink:=p^.llink; p^.llink^.rlink:=q; q^.rlink:=p; p^.llink:=q^.rlink;

C. q^.rlink:=p; p^.rlink:=q; p^.llink^.rlink:=q; q^.rlink:=p;

D. p^.llink^.rlink:=q; q^.rlink:=p; q^.llink:=p^.llink; p^.llink:=q;

正确答案是?,为什么?

应该选择D
设有1,2,3,4个结点(你可以自己画图)。1,2,3是链表中的结点按顺序链在一起。设P指向结点2,Q指向结点4,即要把结点4插到结点2前面。解释如下:
一:p^.llink^.rlink=q;中的p^.llink是结点1而p^.llink^.rlink就是结点1的右指针,它指向Q(结点4)
二:q^.rlink:=p;是指结点4的右指针指向结点2
三:q^.llink:=p^.llink;是指结点4的左指针指向结点1(因为p^.llink即结点2的左指针并没有被破坏,所以可以这样用)
四:p^.llink:=q;最后把P所指的结点2的左指针指向Q所指的结点2
就完成把Q插入到Q之前了!!!

答案是D,你画个图就明白了,此问题主要是已经要先将q与p得前驱连接起来,否则链表就断了,注意这个问题此题迎刃而解

如过 a<===>p q<===>c
完成后
a<===>q<===>p

答案是D 过程
p^.llink^.rlink:=q;
完成后
a<--- p
a --->q<===>c

q^.rlink:=p
完成后
a<--------- p
a --->q --->p
______q<--- c

q^.llink:=p^.llink;
完成后
a<--------- p
a<===>q --->p
______q<--- c

p^.llink:=q;
完成后
a<===>q<===>p
______q<--- c

最后就是这样

D