早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

●试题三 阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。 【函数3说明】 函

题目

●试题三

阅读下列函数说明和C函数,将应填入(n)处的字句写在答题纸的对应栏内。

【函数3说明】

函数DeleteNode(Bitree*r,int e)的功能是:在树根结点指针为r的二叉查找(排序)树上删除键值为e的结点,若删除成功,则函数返回0,否则函数返回-1。二叉查找树结点的类型定义为:

typedef struct Tnode{

int data;/*结点的键值*/

struct Tnode*Lchild,*Rchild;/*指向左、右子树的指针*/

}*Bitree;

在二叉查找树上删除一个结点时,要考虑三种情况:

①若待删除的结点p是叶子结点,则直接删除该结点;

②若待删除的结点p只有一个子结点,则将这个子结点与待删除结点的父结点直接连接,然后删除结点p;

③若待删除的结点p有两个子结点,则在其左子树上,用中序遍历寻找关键值最大的结点s ,用结点s的值代替结点p的值,然后删除结点s,结点s必属于上述①、②情况之一。

【函数3】

int DeleteNode(Bitree*r,int e){

Bitree p=*r,pp,s,c;

while( (1) ){/*从树根结点出发查找键值为e的结点*/

pp=p;

if(e<p->data)p=p->Lchild;

else p=p->Rchild;

}

if(!p)return-1;/*查找失败*/

if(p->Lchild &&p->Rchild) { /*处理情况③*/

s= (2) ;pp=p;

while( (3) ){pp=s;s=s->Rchild;}

p->data=s->data;p=s;

}

/*处理情况①、②*/

if( (4) )c=p->Lchild;

else c=p->Rchild;

if(p==*r)*r=c;

else if( (5) )pp->Lchild=c;

else pp->Rchild=c;

free(p);

return 0;

}

参考答案
正确答案:

●试题三

[问题1

【答案】(1F0是长话业务档案F1是长话用户档案。(2)处理1:电话号码处理5:用户编码。

【解析】本题给出的流程图是长话计费管理的处理流程,用来生成长话缴费通知单。系统的数据源是记录在电信局程控交换机磁带上的原始计费数据,这些数据在处理之前需要先进行分类,以提高系统的效率。原始计费数据记录的是每次通话的数据,长话缴费通知单是针对每个电话用户的,因此在处理1中应该按照电话号码进行分类。F0是在处理4(出账)中用来生成长话帐单文件所要用到的"长话业务档案"。由试题的说明可知,月计费文件中含有各种通话类型的话费,所以处理4(出账)的功能是长话话费从月计费文件中分离出来,并进行数据的验证。根据以上的分析得知F0应该是长话业务档案。F1是在处理6中生成长话缴费通知单所要用到的"长话用户档案"。因为用户编码是用户在系统中的惟一标识,所以应该先将长话帐单文件按照用户编码进行分类,再根据F1长话用户档案,得到用户名和用户地址,产生长话缴费通知单。因此F1应该是长话用户档案。

[问题2

【答案】(1)根据月计费文件中的电话号码,在长话业务档案中找不到相应的用户编码。(2)在月计费文件中,某电话号码有国内长途通话的话费,但在长话业务档案中,国内长途许可标志却不许可。(3)在月计费文件中,某电话号码有国际长途通话的话费,但在长话业务档案中,国际长途许可标志却不许可。

[问题3

【答案】对长话帐单文件中的每个记录,根据用户编码查询长途电话用户档案,找到相应的用户名和用户地址,形成长话缴费通知单。

 

看了●试题三 阅读下列函数说明和C...的网友还看了以下: