| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2119 人关注过本帖
标题:[求助]期末作业折腾了三天,我还是不会 (表达式求值和二叉树)
取消只看楼主 加入收藏
sakoda
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-6-4
收藏
 问题点数:0 回复次数:1 
[求助]期末作业折腾了三天,我还是不会 (表达式求值和二叉树)

哪位高手帮帮我 我憋了三天 还是大家帮我把 越完全越好 在下实在是学问太少了~~~ 1. 表达式求值。 基本要求 1)读入原表达式(括号),创建对应二叉树叉树。 2)对二叉树进行前序遍历、中序遍历、后续遍历(非递归)。 3)后缀表达式和前缀表达式求解原表达式的值。 对非法表达式格式能予以判断。 【选作内容 原表达式中有三种括号,先作(),再作[],最后是{}。判断括号的优先级别建立二叉树。

搜索更多相关主题的帖子: 二叉树 求值 作业 折腾 表达 
2005-06-04 18:32
sakoda
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2005-6-4
收藏
得分:0 

怎么说??? 我编了一点点 可是建立树的时候不能够进行括号的判断 就是如果表达式里面有括号就不行了 还有 就是说 不能区分数字和字符呀 怎么才能求值呢??? 要怎么弄呢????? //定义含有三个指针的结点 typedef struct BiTNode{ char data; int op; struct BiTNode *lchild, *rchild, *parent; }BiTNode, *BiTree;

int length; BiTNode *CreatTree(char a[]) { //建立二叉树 BiTNode *t; BiTNode *p; BiTNode *s; BiTNode *q; BiTNode *T; bool cre; cre=false;

/*t=(BiTNode *)malloc(sizeof(BiTNode)); t->lchild=NULL; t->rchild=NULL; t->parent=NULL; */ t=(BiTNode *)malloc(sizeof(BiTNode)); t->lchild=NULL; t->rchild=NULL; t->parent=NULL; t->data=a[0]; t->op=0; p=t; char in; for(int i=1;i<length;i++) { in=a[i]; switch(in) { case '+': t=(BiTNode *)malloc(sizeof(BiTNode)); t->parent =NULL; t->rchild=NULL; t->lchild =NULL; t->data=a[i]; t->op=1; s=p; while(s!=NULL) { q=s; s=s->parent; } q->parent=t; t->lchild=q; //q->rchild =NULL; t->parent =NULL; p=t; break; case '-': t=(BiTNode *)malloc(sizeof(BiTNode)); t->rchild=NULL; t->data=a[i]; t->op=1; s=p; while(s!=NULL) { q=s; s=s->parent; } q->parent=t; t->lchild=q; // q->rchild =NULL; t->parent =NULL; p=t; break;

case '*': t=(BiTNode *)malloc(sizeof(BiTNode)); t->lchild=NULL; t->rchild=NULL; t->data=a[i]; t->op=-1; t->parent =NULL;

if(p->parent ==NULL) { p->parent =t; t->lchild =p; }

else { while(p->parent !=NULL&&p->parent ->op !=1) p=p->parent ; if(p->parent ==NULL) { p->parent =t; t->lchild =p;

} else { p->parent ->rchild =t; t->parent =p->parent ; t->lchild =p; p->parent =t; }

}

p=t; break;

case '/': t=(BiTNode *)malloc(sizeof(BiTNode)); t->lchild=NULL; t->rchild=NULL; t->data=a[i]; t->op=-1; t->parent =NULL;

if(p->parent ==NULL) { p->parent =t; t->lchild =p; }

else { while(p->parent !=NULL&&p->parent ->op !=1) p=p->parent ; if(p->parent ==NULL) { p->parent =t; t->lchild =p;

} else { p->parent ->rchild =t; t->parent =p->parent ; t->lchild =p; p->parent =t; }

}

p=t; break; default:

t=(BiTNode *)malloc(sizeof(BiTNode)); t->lchild=NULL; t->rchild=NULL; t->parent=p; t->data=a[i]; t->op=0; p->rchild=t; p=t; } }

while(p) { T=p; p=p->parent ; } cout<<T->data <<endl; return T; } //CreatTree

2005-06-04 21:58
快速回复:[求助]期末作业折腾了三天,我还是不会 (表达式求值和二叉树)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011923 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved