首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图
阅读以下说明和C语言函数,将应填入(n)处的语句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值后跟用“()”括起来的各子树的列表(若有子树的话),各子树的列表间用“,”分隔。例如,如下图
admin
2010-01-15
39
问题
阅读以下说明和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
程序员下午应用技术考试
软考初级
相关试题推荐
n=1,2,3,…,100时,[n/3]共有(4)________________个不同的数([a]表示a的整数部分,例如[3.14]=3)。
操作系统的资源管理功能不包括________________。
数据________________是将数据以图形图像形式表示,并利用数据分析工具发现其中未知信息的处理过程。
国际标准化组织提出的开放系统互连OSI参考模型,将计算机网络分成7层,其中最底层是()。
要使Word能自动提醒英文单词的字母拼写是否正确,应设置Word的(47)选项功能。
在Excel2007中,若在单元格A1中输入函数“=MID(“RUANKAO”,1,4)”,按回车键后,则A1单元格中的值为()。
计算机使用了一段时间后,系统磁盘空间不足,系统启动时间变长,系统响应延迟,应用程序运行缓慢,此时,需要对系统进行优化。(28)________________不属于系统优化工作。
内存用于存放计算机运行时的指令、程序、需处理的数据和运行结果。但是,存储在(2)中的内容是不能用指令修改的。
解决网络安全问题的技术分为主动防御保护技术和被动防御保护技术两大类,__________属于被动防御保护技术。
框架在网页布局中主要起什么作用?主页中定义了几个框架,分别显示哪个文档?假设连接的数据记录集当前指向的记录如下:写出以下ASP代码经过IIS服务器解释后的结果。<tdalign-"center"width="20%"><ahref
随机试题
下列有关使用糖皮质激素治疗SARS的适应证,错误的是
进口口岸()贸易方式()
苏某(男)的父亲于1975年逝世,留有遗产为房屋(A)一处,由苏某继承,但是直到1977年才取得房产证。1976年苏某与秦某(女)结婚,两人结婚时苏某的姑父送给贺礼2千元,婚后育有一子苏鹏(化名)和一女苏琳(化名)。两人于1985年1月购买房产一处(B)并
2017年中央经济工作会议指出,深化供给侧结构性改革,要推进三大转变。下列哪项不属于三大转变?
随着新的传播技术的出现,新的传播媒介也应运而生,网络媒体的影响力日益扩大,对传统媒体带来越来越严峻的挑战。手机媒体由于发展时间短、相关技术瓶颈尚需突破,目前尚未找到合理的商业模式,但是手机由于具有巨量的用户群,必将在不远的未来迎来黄金发展期,进一步颠覆传媒
宪法是一个国家的根本大法,下列属于我国宪法基本特征的有()
窗体上有1个名为List1的列表框,其中已经输入了若干个项目(如图所示);还有2个文本框,名称分别为Text1、Text2,1个名称为Command1的命令按钮,并有以下程序。PrivateSubCommand1Click()
Wheredidtheconversationtakeplace?
ReadtheextractbelowfromanarticleaboutBankers’bonuses.Choosethebestsentencefromthelistontheoppositepagetofi
Theagriculturerevolutioninthenineteenthcenturyinvolvedtwothings;theinventionoflabor-savingmachineryandthedevelo
最新回复
(
0
)