首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。 [说明] 下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ry
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。 [说明] 下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ry
admin
2010-12-17
37
问题
阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。
[说明]
下面程序用来将打乱的单词还原为原来的次序,比如将rty还原为try。单词的原来次序存储于wordlist.txt文件中,原则上可用穷举法(rty对应的穷举为:rty、ryt、try、tyr、ytr、yrt),但考虑到破译速度,采用如下方法。
注意到单词列表中不存在组成字符完全相同的单词(如Hack12与Hack21包含完全相同的字符),因此将单词中的字符进行重组再进行比较,例如,try单词重组为rty(按ASCⅡ码顺序),这样不管打乱的单词是什么顺序,只要是由r、t、y三个字母组成的均破译为try,大大提高破译速度。程序中借助二叉排序树以进一步提高查找效率,二叉排序树左子树(如果有)上的节点对应的值均小于根节点的值,右子树(如果有)上的节点对应的值均大于根节点的值。
函数中使用的符号定义如下:
#define NumberofWords 1275//单词总数
#define MaxLength 10//最长单词所含字符数
char WordList[NumberofWords][MaxLength];//存储单词列表
int cmp(Node *q,Node *p);//q与p比较。p小,返回负值;P大返回正值:相等,返回0
typedef struct Node(//二叉树节点
char *eleLetters;//重组后的字符串
int index;//对应单词表中的下标
struct Node *lChiId,*rChiid;//左右子节点
}Node;
[C代码]
void reCompose(Node *p,char *temp)
//重纰,亦即将temp字符串中的字符升序排序,存储于p节点中
//采用直接插入排序法
{
char c;
strcpy(p->eleLetters,temp);//
int len=strlen(temp);
int i,j,k;
for(i=0;i<len-1;i++){
k=i;
for(j=i+1;j<lan;j++){
if(p->eleLetters[j]<P->eleLetters[k])k=J;
}
if( (1) ){
C=P->eleLetters
;
P->eleLetters
=P->eleLetters[k];
P->eleLetters[k]=c;
}//if
}//for
};
int find(Node &root,char *temp)
//在二叉排序树root中查找与temp匹配的单词。
//若匹配返回相应单词在WordList中下标;若查找失败,返回-1
{
Node *P,*q;
int flag;
P=(2);//临时存储
reCompose(p,temp);//将temp重组
q=&root;
while((flag=(3))&&q !=NULL){
if(flag<0){//搜索左子树
q=q->lChiid;
}else(//搜索右子树
q=q->rChild;
}
}//while
if(flag==0){//找到匹配的,保存下标
return (4);
}
}
if( (5) ){//查找失败
printf("cant unscramble the following word:%s",temp);;
return -1;
}
};
(5)
选项
答案
q==NULL
解析
该题涉及二叉排序树的应用、直接插入排序算法等。
空(1)所在函数是直接插入排序的一个实现,理解了直接插入排序算法很容易得出答案,条件(1)成立时,需要进行交换,故空(1)应填“k!=i”。
空(2)比较简单,p声明为指针,在引用(reCompse(p,temp)之前需要申请空间,故空(2)应填“(Node *)malloc(sizeof P)”。
接下来在二叉排序上进行查找。while循环体内只有两个分支,一个是flag<0时继续往左子树搜索,另一个就是往右子树搜索,此时应该对应的是flag>0。据此可判知,flag存储的是查找节点p与当前节点q之间的大小关系,显然是调用类Node的cmp方法,故空(3)应填“cmp(q,p)”。注意,不能填成“cmp(p,q)”,那样将不可能找到匹配的,因为该二叉排序树是左子树小于根节点,而cmp(q,p)当p比q小时返回负值,搜索应往左子树继续。
空(4)是找到匹配时返回,根据函数注释,函数find的返回值是匹配单词在WordList数组中的下标,结构Node的index域正好存储的是下标。故空(4)应填“q->index”。
空(5)是查找失败的情况,对应条件为“q==NULL”。故空(5)应填“q==NULL”。
转载请注明原文地址:https://kaotiyun.com/show/3qDZ777K
本试题收录于:
软件设计师下午应用技术考试题库软考中级分类
0
软件设计师下午应用技术考试
软考中级
相关试题推荐
有两个N*N的矩阵A和B,想要在微机(PC机)上按矩阵乘法基本算法编程实现计算A*B。假设N较大,本机内存也足够大,可以存下A、B和结果矩阵。那么,为了加快计算速度,A和B在内存中的存储方式应选择______。
以下关于软件测试目的的叙述中,不正确的是________________。
以下不属于易用性测试的是(69)________________。
假设关系R1和R2如下图所示:若进行R1R2运算,则结果集分别为(1)元关系,共有(2)个元组。(2)
堆是一种数据结构,分为大顶堆和小顶堆两种类型。大(小)顶堆要求父元素大于等于(小于等于)其左右孩子元素。则________________是一个小顶堆结构。堆结构用二叉树表示,则适宜的二叉树类型为________________。对于10个结点的小顶堆,其
某企业有生产部和销售部,生产部负责生产产品并送入仓库,销售部从仓库取出产品销售。假设仓库可存放n件产品。用PV操作实现他们之间的同步过程如下图所示。其中,信号量S是一个互斥信号量,初值为(1);S1是一个(2);S2是一
计算机采用分级存储体系的主要目的是为了解决()的问题。
某汽车维修公司有部门、员工和顾客等实体,各实体对应的关系模式如下:部门(部门代码,部门名称,电话)员工(员工代码,姓名,部门代码)顾客(顾客号,姓名,年龄,性别)维修(顾客号,故障情况,维修日期,员工代码)假设每个部门允许有多部电话,则电话属性为
“<titlestyle="italic">science</title>”是XML中一个元素的定义,其中元素的内容是(29)。
下图是________________设计模式的类图,该设计模式的目的是________________,图中,Decorator和Component之间是________________关系,ConcreteDecorator和Decorator之间是_
随机试题
下列活动中,属于价值链辅助活动的是()。
在SDH微波通信系统中,位于干线上的、需完成多个方向通信任务的站称为()站。
溶菌酶对革兰阴性菌杀菌作用弱,主要是因为
患者男性,50岁。肝硬化腹水明显,1周前呕血,黑便。近日烦躁不安,用很多火柴点不着烟,晚间误将鞋当尿盆。轻度黄疸,两手举起时腕部阵发颤抖。其诊断是()
48岁妇女,G5P3,10年前输卵管结扎术,已绝经2年,阴道血性分泌物增多有臭味,并偶有性交后出血半年。以下的病史或体检所见,哪项可能性最大
甲系某公司经理,乙是其司机。某日,乙开车送甲去洽谈商务,途中因违章超速行驶当场将行人丙撞死,并致行人丁重伤。乙欲送丁去医院救治,被甲阻止。甲催乙送其前去洽谈商务,并称否则会造成重大经济损失。于是,乙打电话给120急救站后离开肇事现场。但因时间延误,丁不治身
[2009年第116题]根据《招标投标法》的规定,下列包括在招标公告中的是()。
泰山之称最早见于《春秋》。()
下面不属于20世纪20年代教育思潮的是()。
—Lookatthenotebelow.—Youwillhearamanaskinganothertobuychina.TelephoneMessageDate:lstAprilTim
最新回复
(
0
)