后缀表达式求值

上传人:正** 文档编号:35295981 上传时间:2018-03-13 格式:DOC 页数:5 大小:52.50KB
返回 下载 相关 举报
后缀表达式求值_第1页
第1页 / 共5页
后缀表达式求值_第2页
第2页 / 共5页
后缀表达式求值_第3页
第3页 / 共5页
后缀表达式求值_第4页
第4页 / 共5页
后缀表达式求值_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《后缀表达式求值》由会员分享,可在线阅读,更多相关《后缀表达式求值(5页珍藏版)》请在金锄头文库上搜索。

1、一、设计思想一、设计思想首先,将中缀表达式转换为后缀表达式。转换算法思路:设中缀表达式已存入数组 En;由于后缀表达式中操作数的次序与中缀表达式一致,故扫描到中缀表达式操作数时 直接输出到 Bn即可;对于运算符,视其优先级别,优先级高的运算符先输出;设一存放 运算符的栈 s,先将 s 置空;依次扫描 En中各分量 Ei送 x: 若 x=“” (结束符) ,依次输出栈 s 中运算符,转换结束; 若 x=操作数,直接输出 x 到 Bn中; 若 x=) ,反复退栈输出栈 s 中子表达式运算符,直到栈顶符=( ,并退掉栈顶的 ( ; 若 x=操作符,反复退栈输出栈 s 中运算符,直到栈顶符 #incl

2、ude #define MaxSize 50structchar dataMaxSize;int top; op;/定义栈;structfloat dataMaxSize;int top; st;/中缀转换为后缀 void trans(char *exp,char *postexp) int i=0;op.top=-1;while(*exp!=0)switch(*exp)case (:op.top+;op.dataop.top=*exp;exp+;break;case ):while(op.dataop.top!=()postexpi+=op.dataop.top;op.top-; op.to

3、p-;exp+;break; case +:case -:while(op.top!=-1op.top-; op.top+;op.dataop.top=*exp;exp+;break;case *:case /:while(op.dataop.top=*|op.dataop.top=/)postexpi+=op.dataop.top;op.top-; op.top+;op.dataop.top=*exp;exp+;break;case :break;default:while(*exp=0postexp+; st.top+;st.datast.top=d;break; postexp+; return st.datast.top; int main() char expMaxSize,postexpMaxSize;printf(“输入表达式,回车符结束;“);while(scanf(“%s“,printf(“zhongzhuibiaodashi: %sn“,exp);printf(“houzuibiaodashi: %sn“,postexp);printf(“zhi: %gn“,compvalue(postexp);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号