首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读下列说明和C函数,将应填入(n)处的字句写在对应栏内。 【说明】 已知集合A和B的元素分别用不含头结点的单链表存储,函数Difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10, 20,15,
阅读下列说明和C函数,将应填入(n)处的字句写在对应栏内。 【说明】 已知集合A和B的元素分别用不含头结点的单链表存储,函数Difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10, 20,15,
admin
2009-02-01
78
问题
阅读下列说明和C函数,将应填入(n)处的字句写在对应栏内。
【说明】
已知集合A和B的元素分别用不含头结点的单链表存储,函数Difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10, 20,15,25,30},集合B={5,15,35,25},如图(a)所示,运算完成后的结果如图(b)所示。
链表结点的结构类型定义如下:
typedef struct Node{
ElemType elem;
struct Node *next;
}NodeType;
【C函数】
void Difference(NodeType **LA,NodeType *LB)
{
NodeType *pa, *pb, *pre, *q;
pre=NULL;
(1);
while (pa) {
pb=LB;
while((2))
pb=pb->next;
if((3)) {
if(!pre)
*LA=(4);
else
(5)=pa->next;
q = pa;
pa=pa->next;
free(q);
}
else {
(6);
pa=pa->next;
}
}
}
选项
答案
(1)pa=*LA (2)pb && pb->elem!=pa->elem,或其等价表示 (3)pb或pb!=NULL (4)pa->next,或(*pa).next,或其等价表示 (5)pre->next,或(*pre).next (6)pre=pa
解析
本题考查链表结构上的基本运算。
集合A与B的差是指在集合A中而不在集合B中的元素。本题用链表表示集合并将运算结果用表示集合A的链表存储,因此涉及到链表上的查找、删除基本运算。
基本思路为:对于集合A中的每个元素,在集合B中进行查找,若找到,则应将该元素从集合A中去掉;否则保留,用两层循环实现,外层循环用于遍历集合A,内层循环遍历集合B。
代码中的指针pa用于指向集合A的元素;pb指向集合B的元素;临时指针q指向需要被删除的元素;pre用于实现删除时结点的链接,与pa保持所指结点的前后继关系。
显然,pa需要一个初始值,即指向集合A的第一个元素结点。由于参数LA是指向集合A第一个结点的指针的指针,因此空(1)处应填入pa=*LA。
在内层循环中遍历集合B时,初始时令pb指向B的第一个元素(pb=LB),此后应在链表中查找与A中当前元素相同者,因此空(2)处应填入pb && pb->elem != pa->elem。
此后,应判断在B中是否找到指定元素。显然,若找到(即pb->elem=pa->elem),则指针pb不为空,否则,pb为空。因此,空(3)处填入pb或pb!=NULL,空(6)处则填入pre=pa。
由于链表不带头结点,因此,当需要删除集合A的第一个元素时,表示该集合的链表头指针会被修改。pre初始值为NULL,可标志删除的是否为A的第一个元素。因此查找成功时,pre为空(!pre成立)表示需要删除A的第一个元素(pa指针所指),使得 A的头指针指向第二个元素,即应将*LA更新为pa->next,空(4)处填入pa->next。如果删除的不是第一个元素,则由于pa指向被删除的元素,而且pre与pa所指元素保持前后继关系,因此空(5)处应填入pre->next。
转载请注明原文地址:https://kaotiyun.com/show/y5DZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
在某大学学籍管理信息系统中,假设学生年龄的输入范围为16~40,则根据黑盒测试中的等价类划分技术,下面划分正确的是(46)。
风险分析在软件项目开发中具有重要作用,包括风险识别、风险预测、风险评估和风险控制等。“建立风险条目检查表”是(18)时的活动,“描述风险的结果”是(19)时的活动。
(12)是指把数据以及操作数据的相关方法组合在同一个单元中,使我们可以把类作为软件中的基本复用单元,提高其内聚度,降低其耦合度。面向对象中的(13)机制是对现实世界中遗传现象的模拟,通过该机制,基类的属性和方法被遗传给派生类。
负载压力性能测试需求分析时,应该选择(63)类型的业务作为测试案例。 ①高吞吐量的业务 ②业务逻辑复杂的业务 ③高商业风险的业务 ④高服务器负载的业务 ⑤批处理的业务
(46)叙述是正确的。①测试用例应由测试设计人员来制定。②测试点应由测试人员确立。③测试工作展开于项目立项后,而不是代码开发完成之后。④测试对象是源代码。
黑盒测试中,(59)是根据输出对输入的依赖关系设计测试用例。
假设在程序控制流图中,有12条边,8个节点,则确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上限是(54)。
假设A、B为布尔变量,对于逻辑表达式(A&&B||C),需要______个测试用例才能完成判定覆盖(DC)。A.2B.3C.4D.5
V模型描述了软件基本的开发过程和测试行为,描述了不同测试阶段与开发过程各阶段的对应关系。其中,集成测试阶段对应的开发阶段是______。A.需求分析阶段B.概要设计阶段C.详细设计阶段D.编码阶段
已知函数f()、g()的定义如下所示,执行表达式“x=f(5)”的运算时,若函数调用g(a)是引用调用(callbyreference)方式,则执行“x:f(5)”后x的值为(7);若函数调用g(a)是值调用(callbyvalue)方式,
随机试题
什么是麦氏点?有何临床意义?
关于腹股沟嵌顿疝手法复位的叙述,下列哪项不正确
诊断肺心病早期的主要依据是下列哪项
男,30岁,右上肺结核,初治用异烟肼、乙胺丁醇和链霉素治疗半年,停药3个月后复发,复治药物宜选用
在竖向荷载作用下,下图中何项的横、纵外墙计算简图是正确的?______假定传至梁底墙体截面上的上部轴向力设计值N0=274.08kN,楼面梁支座反力设计值Ni=54.24kN,梁跨度小于6m。试确定梁端支承处砌体的局部受压承载力验算公式(ΦN0+N
已知某项目的净现金流量如下表所示。若基准折现率i0=8%,则该项目的净现值为()万元。
某地面工程合同约定的本月计划完成工作量5000m3,计划单价20元/m3。到月底检查时,确认的承包商实际完成工作量4600m3,实际单价25/m3,则该工程的费用绩效指数(CPI)为()。
“新月派”是中国现代文学史上一个著名的文学流派,得名于1928年创刊的《新月》杂志。()是《新月》的创办者和新月派的代表人物。
管理幅度问题是如何提出的?如何确定有效的管理幅度和合理的管理层次?
ObesityratesforAmericanadultshavestabilized【C1】______therateofchildhoodandminorityobesityisrising,【C2】______astud
最新回复
(
0
)