逆波兰式的生成算法

逆波兰式的生成算法

ID:38529004

大小:113.50 KB

页数:7页

时间:2019-06-14

逆波兰式的生成算法_第1页
逆波兰式的生成算法_第2页
逆波兰式的生成算法_第3页
逆波兰式的生成算法_第4页
逆波兰式的生成算法_第5页
资源描述:

《逆波兰式的生成算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、逆波兰式的生成程序(选做)一、实验目的和要求内容:掌握语法分析的基本思想,并用高级语言编写逆波兰式的生成程序。要求:利用逆波兰式生成算法编写程序,将从键盘中输入的算术表达式(中缀表达式)转化为逆波兰式。二、实验内容和原理逆波兰表达式的生成过程涉及到运算符的优先级,下表中列出几个常用运算符的优先关系。常用运算符优先关系矩阵右左+-*/()+>><<<>->><<<>*>>>><>/>>>><>(<<<<<=)>>>><>逆波兰表达式生成算法的关键在于比较当前运算符与栈顶运算符的优先关系,若当前运算符的优先关系高于栈顶运算符,则当前运算符进栈,若当前运算符的优先级小

2、于栈顶运算符,则栈顶运算符退栈。逆波兰式生成算法的流程图实验代码:importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassReversePolishNotation{/*-------------------------------------成员变量的声明--------------------------------------------*/privatefinalcharoperatorPriorMatrix[][]

3、={{'>','>','<','<','<','>'},{'>','>','<','<','<','>'},{'>','>','>','>','<','>'},{'>','>','>','>','<','>'},{'<','<','<','<','<','='},{'>','>','>','>','','>'}};privatecharinfixExpression[];//字符串infix用于表示要处理的中缀表达式privateStringreversePolishExpression=newString();//字符串reversePlishExpressi

4、on用于表示处理结果逆波兰式privateStringanalysisStack=newString();//字符串analysisStack用于表示分析栈privateintlengthOfInfixExpression=0;//中缀表达式的长度,初始值为0privateintcount=0;privateintmatchFlag=1;//用来标识左右括号是否配对正确/*---------------------------------------------------------------------------------*//*-----------

5、-----------------------成员方法的定义-------------------------------*/privatevoidinit(Stringstr){str=str.trim();infixExpression=str.toCharArray();lengthOfInfixExpression=infixExpression.length;}privateintoperatorJudgement(charcurrentOperator){intflag=-1;switch(currentOperator){case'+':flag=

6、0;break;case'-':flag=1;break;case'*':flag=2;break;case'/':flag=3;break;case'(':flag=4;break;case')':flag=5;break;}returnflag;}privatevoidconvertProcess(Stringstr){init(str);while(true){matchFlag=0;if(count>=lengthOfInfixExpression){while(analysisStack.length()!=0){if(analysisStack.ch

7、arAt(analysisStack.length()-1)=='('){System.out.println("您输入的中缀表达式中有无法配对的'('括号,请仔细核实!");System.exit(0);}else{reversePolishExpression+=analysisStack.charAt(analysisStack.length()-1);analysisStack=analysisStack.substring(0,analysisStack.length()-1);}}System.out.println("逆波兰式为:"+rev

8、ersePolishEx

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。