早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明】 设M叉树采用列表法表示,即每

题目

阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。

【说明】

设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根节点的值部分(设为一个字符)和用“()”,括起来的各子树的列表(如有子树的话),各子列表间用“,”分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。

本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。

【函数5-8】

inelude<stdio.h>

include<stdlib.h>

define M3

typedef struct node{

char val;

street node *subTree[M];

}NODE;

char buf[255], *six = buf;

NODE *d = NULL;

NODE *makeTree()/*由列表生成M叉树*/

{

int k;

NODE *s;

s=(1);

s->val=*six++;

for(k=0; k<M; k++)s->subTree[k]=NULL;

if(*str=="("){

k=0;

do{

six++;

s->subTree[k]=(2);

if(*str==")"){

six++;

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(",");

}

putchax(")");

}

}

void main()

{

prinff("Enter exp:");

scanf("%s", str);

d = makeTree();

walkTree(d);

putchaW",n");

}

参考答案
正确答案:(1) (NODE*)malloc(sizeoffNODE)) (2) makeTree() (3) *str=='' (4) putchar(t->val) (5) walkTree(t->subTree[i])
(1) (NODE*)malloc(sizeoffNODE)) (2) makeTree() (3) *str==',' (4) putchar(t->val) (5) walkTree(t->subTree[i]) 解析:本题考查M叉树的应用,是一种二叉树的推广,只是将子树的数目由2推广为M,这样子树需要用一个数组来存储,在此为node结构中的subTree字段。
函数makeTree是根据列表生成M叉树。空(1)比较简单,变量s已声明为NODE指针,紧接着有对其的引用s->val,将列表中的第一字符赋值给s中的val字段,而指针在引用前需要指向确定的内存单元,此处应该申请内存空间,故空(1)应填(Node*)malloc(sizeof(NODE))。
接着用for循环将s的子树指针列表初始化为NULL。根据题中说明,列表的结构中子树用括号括起来。因此判断列表中的下一个字符是否为左括号“(”,如果不是,说明没有子树:如果是,则生成子树。通过do-while循环来生成子树列表。根据M叉树的递归性质,可得空 (2)应填makeTree()。
空(3)相对较难,是while循环继续的条件,循环体的功能就是生成一棵子树,循环继续意味着需要生成另一棵子树。根据列表的结构,子树间是用逗号“,”分隔的,因此循环继续的条件就是此时处理的字符是逗号。故空(3)应填*str==','。
函数walkTree是由M叉树输出列表。根据列表的结构,先输出根节点的值,然后如果有子树的话用括号将其括起来,子树间用逗号分隔,类似于二叉树的前序遍历。因此易得空(4)应填putchar(t->val),或其他等价形式,总之就是输出变量t->val存储的字符。类似空(2),根据M叉树的递归性质,空(5)应填walkTree(t->subTree[i])。紧接着的if块正是判断是否还有子树,若有就输出逗号。
(1) (NODE*)malloc(sizeoffNODE))
(2) makeTree()
(3) *str==','
(4) putchar(t->val)
(5) walkTree(t->subTree[i])
看了阅读下列程序说明和C代码,将应...的网友还看了以下:

浮力方面的边长为0.16米的正方体木块漂浮在水面上,木块的下表面距离水面0.12米,取g=10N/ 物理 2020-04-27 …

如图所示,甲、乙两个容器内分别盛有水和酒精,两块完全相同的物块分别静止在这两种液体中,则比较两块物 物理 2020-06-07 …

有梁板的柱高自柱基上表面(或楼板上表面)算至楼板下表面处什么柱要算到板顶?请举例!有梁板的柱高自柱 数学 2020-06-18 …

(1)如图所示,一束光从半球面上的A点沿半径方向射入半球形玻璃砖,已知半球形玻璃砖的球心为O,且光 物理 2020-06-19 …

如图所示,一均匀的长方体物块在液体中静止时处于漂浮状态.已知它的底面积为S,下表面处受到液体的压强 物理 2020-06-20 …

溴代麝香草酚蓝(BTB)是一种灵敏的酸碱指示剂,对光不敏感.其一定浓度的水溶液中性偏碱时呈淡蓝色, 语文 2020-07-06 …

请帮忙做统计题假定某化工原料在处理前和处理后取样得到的含脂率如下表:处理前0.1400.1380. 数学 2020-07-18 …

如图是科学家对水稻根进行单侧光照光后的生长状况,下表是处理后的实验结果.实验结果处理方式生长素浓度 语文 2020-07-18 …

如图是科学家对水稻根进行单侧光照光后的生长状况,下表是处理后的实验结果.下面各选项是对该实验结果和数 语文 2020-11-04 …

苦荞麦中含有的槲皮素具有较高的药用价值.下表为处于G1、S和G2+M期细胞数目的比例,其中处理组为槲 语文 2020-12-07 …