【程序5说明】
设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分(设为一个字符)和用“()”括起来的各子树的列表(如有子树的话),各子列表间用“,”分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。
本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。
【程序5】
#include<Stdio.h>
#include<Stdlib.h>
#define M 3
typedef struct nodechar 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;
dostr++;
s->sub Tree[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");