阅读下列程序说明和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]) 解析:本题考查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列输入公式=IF(A2>B2,A2,"")意思是如果A列大于B列在C列显示A列的值,否则显 其他 2020-04-08 …
对于问题一,先对000到018十九幅碎片图片进行图像处理得到19个1980X72的像素矩阵.然后提 历史 2020-06-14 …
如图是甲病(用A、a表示)和乙病(用B、b表示)两种遗传病的系谱图,已知其中一种为伴性遗传.请据图 语文 2020-06-18 …
下图一为白化基因(用a表示)和色盲基因(用b表示)在某人体细胞中分布示意图;图二为有关色盲和白化病 语文 2020-06-30 …
用VBA根据条件自动填公式打个比方:要求B列和C列的和它们的和显示在D列,D列公式:=SUM(B1 其他 2020-07-09 …
是不是任意数列都可以表示成一个等差数列和一个等比数列的和?我们课上证明过任意函数能写成奇函数和偶函 数学 2020-07-13 …
用下列装置进行相应实验,能达到实验目的是()A.图1所示装置用于Cu和浓H2SO4反应制取少量的S 化学 2020-07-22 …
如图表示某二倍体生物的正常细胞及几种突变细胞的一对常染色体(用虚线表示)和性染色体(用实线表示).其 语文 2020-11-02 …
电能可以用E表示吗?和用Q有区别吗? 其他 2020-11-03 …
数学符号西格玛的意思和用法,学长们进!例如这样说吧,我要求一个数列的和:a1+a2+a3+……+an 其他 2020-11-04 …