首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图
admin
2010-01-15
40
问题
阅读以下说明和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://www.kaotiyun.com/show/CBjZ777K
本试题收录于:
程序员下午应用技术考试题库软考初级分类
0
程序员下午应用技术考试
软考初级
相关试题推荐
计算机网络中,防火墙的功能不包括________________。
数据________________是将数据以图形图像形式表示,并利用数据分析工具发现其中未知信息的处理过程。
在实施项目过程中,信息处理员小王在“时间T-项目剩余工作量R”平面坐标系上动态地记录了项目实施进度,并与计划进度做了对比。在项目实施中途,从图上可以看出该项目()。
在Excel2010中,设A1单元格中的值为20,A2单元格中的值为60,若在C1单元格中输入函数“=AVERAGE(A1,A2)”,按回车键后,,则C1单元格中的值为(
为向相关人员以可视化方式展示数据分析结果,首先需要明确目标受众(即需要给哪些人看),并了解他们考虑的一些问题。这些问题一般不包括(69)________________。
图文混排是Word的特色功能之一,下列叙述中,不正确的是(46)。
在Word编辑状态下,有些英文单词或汉字下面会自动加上红色或绿色的波浪型细下划线。以下叙述中,“波浪型细下划线(44)”是错误的。
在Windows7中,若删除桌面上某个应用程序的快捷方式图标,则(31)。
在Excel2010中,设单元格A1、A2、A3、A4中的值分别为20、3、16、20,若在单元格B1中输入函数“=PR0DUCT(ApA2)/MAX(A3,A4)”,按回车键后,则B1单元格中的值为(
下列选项中,不能收发电子邮件的软件是______。
随机试题
会计档案的保管期限可分为()
A.急性左心衰竭患者少尿,尿比重1.025B.尿频、尿急C.突发无尿,双肾盂扩张D.少尿,尿比重1.009E.夜尿多,双肾萎缩肾性急性肾衰竭表现为
下列哪项表现可见于急性再生障碍性贫血
下列有关仲裁与诉讼制度的表述中,哪些符合我国现行法的规定?
(2014年)关于拉氏变换,下列关系式不成立的是()。
项目决策应遵循的原则中,()原则要求决策者充分听取专家的意见,善于吸纳各种不同意见,做到先评估、后决策。
简述判别心理异常的四个标准。
(2014年第4题)与第二次世界大战前的资本主义相比,当代资本主义在许多方面已经并正在发生着深刻的变化。正确分析这些新变化发生的原因,有利于我们科学而全面地认识当代资本主义社会。导致当代资本主义新变化发生的根本推动力量是
Windows98环境下,创建多重启动配置时需修改MSDOS.SYS。如果要在机器启动时自动显示启动菜单,则应在MSDOS.SYS文件中使用哪条命令?______
OneofthegreatestmysteriesinthestudyofCetacea[aquaticmammals]hasalwaysbeenthatthecreaturesfoundinthestomac
最新回复
(
0
)