首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图
admin
2010-01-15
17
问题
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。
【说明】
设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图所示的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。
本程序根据输入的列表生成一棵M叉树,并由M叉树再输出列表。
【函数】
#include
#include
#define M 3 /*三叉树*/
typedef struct node{
int val;
struct node *subTree[M];
}NODE;
char buf[255], *str=buf;
NODE *d=NULL;
NODE *makeTree() /*由列表生成M叉树*/
{
int k; NODE *s;
s=(1);
s->val=*str++;
for(k=0;k<M;k++)
s->subTree[k]=NULL;
if(*str==’(’)
{
k=0;
do{
str++;
s->subTree[k]=(2);
if(*str==’)’)
{
str++;
break;
}
k=k+1;
}while((3));
}
return s;
}
void walkTree(NODE *t) /*由M叉树输出列表*/
{
int i;
if(t !=NULL)
{
(4);
if(t->subTree[0]==NULL)
return;
putchar(’(’);
for(i=0;i<M;i++)
{
(5);
if(i !=M-1 && t->subTree[i+1]!=NULL)
putchar(’,’);
}
putchar(’)’);
}
}
void main()
{
printf("Enter exp: ");
scanf("%s",str);
d=makeTree();
walkTree(d);
putchar(’\n’);
}
选项
答案
(1)(NODE*)malloc(sizeof(NODE)) (2)makeTree() (3)*str (4)putchar(t->val) (5)walkTree(t->subTree[i])
解析
本题考查在C语言中实现用列表表示M叉树。
题目要求程序根据输入的列表生成一棵M叉树,并由M叉树再输出列表。题目中给出了列表与树的对应关系,从这种对应关系中我们可以看出,每个结点后紧跟的那层括号下结点的个数就是这个根结点的孩子个数,用列表表示得到的序列有点像树的先序遍历,因此,根据列表来生成M叉树时,应该是首先生成左子树,然后才依次往右的生成过程。下面来具体[分析]代码。
第(1)空很明显是给变量s赋一个初值,从程序中可以知道,变量s是一个指向NODE型结点的指针变量,但程序中并没有给出这样的结点,那么此空应该是动态创建一个这样的结点。在C语言中,动态分配空间要用函数malloc(),因此,此空答案为(NODE*)malloc(sizeof(NODE))。
第(2)空在循环体中,从程序中不难推断出此循环体的作用是由列表生成M叉树,此空是给s->subTree[k]这个指针数组赋值,这个数组中存放的是当前结点的孩子结点的指针,在树的生成过程中是根据列表来递归生成其对应的三叉树的,此空应该是递归调用生成结点的函数makeTree()。因此,此空答案为makeTree()。
第(3)空是循环结束的判断条件,而这个循环的作用是根据列表来生成三叉树,只有列表的所有元素都被考虑了循环才结束。从程序中可以知道列表的元素存放在数组中,指针变量s廿指向这个数组,且在程序中对列表的操作都是通过指针变量str来实现的,因此,此空答案为*str。
第(4)空在条件判断语句下面,此条件判断语句结果为真,说明当前取到的是结点,接下来应该把该结点的值写入列表中,从后面的程序我们很容易知道实现此功能的函数,因此,此空答案为putchar(t->val)。
第(5)空在一个循环体下面,根据循环的条件,可以推断出这是对一个结点的所有孩子结点进行循环搜索。由M叉树生成列表可以说是由列表生成M叉树的逆过程,需要对树中的每个结点进行检索来生成列表,这里也要用到递归调用,而这个函数的当前检索的结点指针为t->subTree
。因此,此空答案为walkTree(t->subTree
)。
转载请注明原文地址:https://kaotiyun.com/show/CBjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
________________是按照科学的城市发展理念,利用新一代信息技术,通过人、物、城市功能系统之间的无缝连接与协同联动,实现自感知、自适应、自优化,形成安全、便捷、高效、绿色的城市形态。
将四个元素a,b,c,d分成非空的两组,不计组内顺序和组间顺序,共有()种分组方法。
为保护个人信息不被泄露,每个人都需要提高安全意识。以下各项,除(62)外,都是应该养成的安全习惯。
电子商务网站上可以收集到大量客户的基础数据、交易数据和行为数据。以下数据中,()不属于行为数据。
数据的收集方式可有多种,分别适用于各种情况。以下数据收集方式,不恰当的是______。
某互联网公司建立的用户画像(标签化的用户信息)包括人口属性和行为特征两大类,()属于行为特征。
打开DOC文档48.doc,有如下表格,欲在空白单元格中计算出整行其他四个单元格的数值之和,应在空白单元格中插入公式(48)。
在大型分布式信息系统中,为提高信息处理效率,减少网络拥堵,信息存储的原则是:数据应尽量(66)________________。
收集数据时,设计调查的问题很重要。此时,需要注意的原则不包括(8)。
阅读以下说明,回答问题1至问题5,将解答填入答题纸对应的解答栏内。说明在一台计算机上安装完成Windows2000服务器及相应的服务组件。
随机试题
()常用在要求夹持力很大,而空间尺寸受限制的地方。
患者水肿反复发作,日轻夜重,下肢肿甚,腰膝酸软,畏寒肢冷,呼吸急促,呼多吸少,舌淡胖有齿痕,脉沉细。其治法是
火炬及排气筒的安装中,关于塔架的焊接,下列说法错误的是()。
某房地产开发公司计划开发建设一个居民小区,由于该小区在设计上采用了特殊工艺,经有关主管部门批准,开发公司于2007年7月1日将小区的设计任务直接发包给了某设计院,但双方没有签订书面合同,2007年6月30日,设计院完成了工程设计,开发公司以没有书面合同,不
某建设工程施工合同约定2012年11月20日竣工并在1个月内交付发包方使用,后因承包方原因工期拖延3个月,但发包方在2013年元月20日未经验收实际占用了该工程,则该工程的竣工日期应为()。
以下程序段中,能够通过调用函数fun,使main函数中的指针变量p指向一个合法的整型单元的是______。
决定我跟你过年回家一起
AdisasterofTitanicproportionsAt11.39p.m.ontheeveningofSunday14April1912,lookoutsFrederickFleetandReginal
Chinaisthetopsourcecountryofinternationalstudentsintheworld.Recentstatisticshaveshowna【C1】______trendforChine
BilingualEducationI.Bilingualeducation—Bilingualeducationprovidesinstructioninboththestudents’nativelanguageandt
最新回复
(
0
)