首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图
admin
2010-01-15
54
问题
阅读以下说明和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
程序员下午应用技术考试
软考初级
相关试题推荐
计算机网络中,防火墙的功能不包括________________。
在Excel2010中,设单元格A1、B1、C1、A2、B2、C2中的值分别为1、2、3、4、5、6,若在单元格D1中输入函数“=MAX(A1:A2,B1:C2)”,按回车键后,则D1单元格中的值为(
计算机采用二进制的好处不包括______。
在Word2007中,若用户需要将一篇文章中的字符串“Internet”全部替换为字符串“因特网”,则可以在编辑菜单中选择()命令。
删除Windows中某个应用程序的快捷方式,意味着(39)。
某企业的大数据工程项目包括如下四个阶段的工作:①数据获取,②数据清洗与整理,③数据分析,④数据展现。一般来说,工作量较大、花费时间较长的阶段是______(1),技术含量最高的阶段是______(2),准备向有关部门递交成果的阶段是______(3)。
Windows XP的许多应用程序的“文件”菜单中,都有“保存”和“另存为”两个命令。以下对这两个命令的叙述,正确的是(36)。
在网页中创建一个如下图所示的表单控件的HTML代码是(26)。
阅读下列HTML文本和说明,在该HTML文本中存在5处错误,请指出错误所在的行号、错误原因以及改正的方法。[说明]这是一个简单的HTML文本,显示作者个人主页的登录界面。[HTML文本](1)<HTML>(2)<B
先阅读以下说明,然后回答司题1至问题3。[说明]综合布线系统(PDS,PremisesDistributionSystem)是为具有综合业务需求的计算机数据网开发的,可以满足各种通信与计算机信息传输的要求,图12-2是综合布线系统的构成
随机试题
超高压系统产生的电晕是一种无功功率损耗。()
试述十一届六中全会决议关于毛泽东的历史地位和毛泽东思想的评价。
能攻下热积的药物是
六味地黄丸中调补少阴的配伍药对是
患者,男性,35岁,右下肢外伤后未得到及时处理,导致破伤风,伤口换药后敷料的处理方法是()。
关于建筑施工企业负责人带班检查的说法,正确的有()。
某足额财产保险合同的被保险人在保险财产发生推定全损后,就损失的100万元向保险人提出委付,保险人接受委付并支付保险赔款100万元后,保险人在处理该受损保险标的物后获得110万元收益。对超过的10万元的正确处理方式是( )。
通过向社会公开发行一种凭证来筹集资金,并将资金用于证券投资的集合投资制度指的是()。
评价社会主义条件下生产资料所有制形式的标准是()。
Americansaregettingreadyforthebiggestsoccereventintheworld.Forthefirsttimetheworldcupsoccercompetitionwill
最新回复
(
0
)