四则运算表达式求值(栈+二叉树,c++版)(2)
数据结构——实验报告
case '*': case '/': if(root->ch[0]=='+'||root->ch[0]=='-'){ p=new Node; strcpy(p->ch,root->ch); p->lChild=root; p->rChild=q; op=getOp(root); root=p; } else { q->lChild=root; root=q; p=new Node; op=getOp(p); root->rChild=p; } break; case '(': p=root; while(p->rChild) p=p->rChild; if(p->lChild==NULL) { p->lChild=crtTree(p->lChild); //递归创建括号里的指针 op=array[count]; count++; break; } else{ p->rChild=crtTree(p->rChild); //递归创建括号里的指针 op=array[count]; count++; break; } case ')': return root; } } return root; }
//传入根结点,后序遍历,赋值给另一个字符数组(主要是为了给后序的计算表达式值提供方便)
void output(Node *root){ int n; if(root){ output(root->lChild); output(root->rChild);
6 / 11
数据结构——实验报告
n=0; while(root->ch[n]!='\\0') str[k++]=root->ch[n++]; str[k++]=' '; } }
bool isError(char ch){ //判断每个字符是否有错 if(ch!='+'&&ch!='-'&&ch!='*'&&ch!='/'&&!(ch<='9'&&ch>='0')&&ch!='.'&&ch!='('&&ch!=')'){ }
cout << \字符错误!\ return true; }
return false;
void deal(){ //对字符数组进行处理 int i=0,n=0; while(array[i]){ if(array[i]==' '||array[i]=='=') i++; array[n++]=array[i++]; } array[n++]='='; array[n]='\\0'; }
double value(string s2){ // 计算后缀表达式,得到其结果。 stack < double> s; double x,y; int i = 0; while(i < s2.length() ){ if(s2[i] == ' ') i++; switch(s2[i]) { case '+': if(s.size()>=2){ x = s.top(); s.pop(); x += s.top(); s.pop(); i++; break; } else return 0; case '-': if(s.size()>=2){ x = s.top(); s.pop(); x =s.top()-x; s.pop(); i++; break; } else return 0;
7 / 11
数据结构——实验报告
case '*': if(s.size()>=2){ x = s.top(); s.pop(); x *= s.top(); s.pop(); i++; break; } else return 0; case '/': if(s.size()>=2){ if( s.top()==0) return 0; else{ x = s.top(); s.pop(); x = s.top()/x; s.pop(); i++; break; } } else return 0; default : x = 0; while('0' <= s2[i]&&s2[i] <= '9'){ x = x*10+s2[i] - '0'; i++; } if(s2[i] == '.'){ double k = 10.0; y = 0; i++; while('0' <= s2[i]&&s2[i] <= '9'){ y += ((s2[i]-'0')/k); i++; k *= 10; } x += y; } break; } if(x!=0) s.push(x); } if( s.size()==1 ) return s.top(); else return 0; }
2、利用堆栈来实现中缀表达式转换为后缀表达式。
8 / 11
数据结构——实验报告
#include
int cmp(char ch){ // 运算符优先级 switch(ch) {
case '+':
case '-': return 1; case '*':
case '/': return 2; default : return 0; } }
void change(string &s1, string &s2){ // 中缀表达式转变后缀表达式 stack
while(i < s1.length()){ //分成四个级别来检验中缀表达式 //s1.length()是为了s1的长度,不包括\\0
if(s1[i] == '(') //级别一 s.push(s1[i++]);
else if(s1[i] == ')'){ //级别二 while( s.top() != '(' ){ s2 += s.top(); s2 += ' '; s.pop(); }
s.pop(); i++; }else if( s1[i] == '+'||s1[i] == '-'||s1[i] == '*'||s1[i] == '/' ){ //级别三 while( cmp(s.top()) >= cmp(s1[i]) ){ s2 += s.top(); s2 += ' '; s.pop(); }
s.push(s1[i]); i++; }
else{ //级别四
while('0' <= s1[i]&&s1[i] <= '9'||s1[i] == '.'){ s2 += s1[i++];
9 / 11
数据结构——实验报告
}
s2 += ' '; } }
while(s.top() != '#'){ //最后一步 s2 += s.top(); s2 += ' '; s.pop(); } }
double value(string &s2){ // 计算后缀表达式,得到其结果。 stack
while(i < s2.length()-1){ //由于s2的最后一位是空格,影响判断,所以用s2.length()-1
if(s2[i] == ' ') i++; switch(s2[i]) { case '+': if(s.size()>=2){ x = s.top(); s.pop(); x += s.top(); s.pop(); i++; break; } else return 0; case '-': if(s.size()>=2){x = s.top(); s.pop(); x =s.top()-x; s.pop(); i++; break; } else return 0; case '*': if(s.size()>=2){x = s.top(); s.pop(); x *= s.top(); s.pop(); i++; break; } else return 0; case '/': if(s.size()>=2){x = s.top(); s.pop(); x = s.top()/x; s.pop(); i++; break; } else return 0; default : {
x = 0;
while('0' <= s2[i]&&s2[i] <= '9'){ x = x*10+s2[i] - '0'; i++; }
if(s2[i] == '.'){
double k = 10.0; y = 0; i++;
while('0' <= s2[i]&&s2[i] <= '9'){ y += ((s2[i]-'0')/k); i++; k *= 10; }
10 / 11
数据结构——实验报告
x += y; } break; } }
s.push(x); } …… 此处隐藏:1095字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




