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

●试题五 阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【程序5说明】 设

题目

●试题五

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

【程序5说明】

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

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

【程序5】

#include<stdio.h>

#include<stdli

B.h>

#define M 3

typedef struct node{char 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))(2makeTree

3*str ==,4putchar t->val)(5walkTree t->subTreei])

【解析】(1)该句分配一块内存,大小为sizeofNODE),并使定义的NODE型指针S指向这块内存。(2)使用递归思想,建立子树。上层函数中的str指针首先被保存,然后,在该maketree函数内部,str指向了上层函数中括号内的第一个字符。(3*Str==,判断是否还有子树。(4)对树根元素进行存储。(5)也是利用递归,对子树分别输入到列表中。