●试题五
阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【程序5说明】
设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分(设为一个字符)和用"()"括起来的各子树的列表(如有子树的话),各子列表间用","分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。
本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。
【程序5】
#include
#include 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 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 (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′); }