树的括号表示转换成孩子表示有些地方不明白

yunhaiC QQ654777694 2006-07-12 10:44:43
#define m 3
#define maxsize 20
#define bmaxsize 50
typedef char datatype;
typedef struct node
{datatpe data;
int chile[m];
}treenode;
treenode tree[maxsize];
int root;
int length;
char p[bmaxsize];
void bracktotree(char p[],int *root,int *length,treenode tree[])
{int stack[maxsize];
int top;
int i,j,k,l,done;
k=0;j=0;*root=0;
top=-1;done=1;
tree[j].data=p[k];
++k;
for(i=0;i<m;++i)
tree[j].chile[i]=-1; //这个for是什么意思?而且这里怎么等于-1??
while(done)
{if(p[k]=='(')
{++top;
stack[top]=j; //这个是等于j是什么意思?
++k;
}
else if(p[k]==')')
{--top;
if(top==-1)
done=0;
else ++k;
}
else if(p[k]==',')
++k;
else
{++j;
tree[j].data=p[k];
for(i=0;i<m;++i)
tree[j].chile[i]=-1;
l=stack[top];
i=0;
while(tree[l].chile[i]!=-1)
++i;
tree[l].chile[i]=j;
++k;
}
}
*length=j;
}
...全文
188 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
tailzhou 2006-07-12
  • 打赏
  • 举报
回复
tree[j].chile[i]=-1; //这个for是什么意思?而且这里怎么等于-1??
-1表示还没设置该孩子,等待处理.

stack[top]=j; //这个是等于j是什么意思?
stack记录父节点.
  • 打赏
  • 举报
回复
看你这个蠢货
人家闲题目简单都不愿意回答

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧