首页 > 编程知识 正文

前缀表达式和后缀表达式,单词后缀总结

时间:2023-05-06 14:41:46 阅读:44323 作者:2868

另一方面,后缀式介绍后缀式的特点是计算机运算非常方便,需要使用堆栈,计算机的处理过程只需要依次读取,遇到数字时放入堆栈,运算符时从两个堆栈中提取数字进行运算

例如,1 2的后缀表达式是1 2;

堆栈可以将一般的骑马订表达式变为后缀表达式,可以计算后缀表达式得到结果,因此该应用在计算机中很常用;

二、将骑马订形式转换为后缀形式的这一方法需要遵循一些规则。

(1)读取操作数后,直接放入输出字符串;

)2)读入普通运算符,如-*/时,放入堆栈中,但放入堆栈前必须检查堆栈顶部,确认堆栈顶部运算符的优先级低于放入的运算符的优先级。 如果优先级较低,则必须将堆栈顶部的运算符放在输出字符串中;

)3)读取时),左括号优先级最高,放入堆栈中,但注意左括号进入堆栈后优先级最低;

(4)读取时) ),将堆栈内的运算符取出放入输出字符串中,在取出)之前,) )不会输出到输出字符串中;

(5)依次读完公式,如果堆栈中还有操作员,弹出,放入输出字符串;

三.计算后缀的公式规则如下。

(1)操作数时,放入堆栈;

)2)对于操作员,取出堆栈中的两个操作数,进行运算后,将结果放入堆栈;

(3)最终堆栈只有一个要素,该要素就是计算结果。

四、码以下码为计算器辅助码,用此码可快速计算。

输入:四则运算(对应括号) ) ) ) )

输出:结果字符串

package org.Xia zdong.calculator utils; import java.util.Stack; /**计算器工具类*出现表示完成整数、浮点加、减、乘、除、括号运算的* *禁忌: 0.5的. 5时,结果不正确。 * @ authorxiazdong * */publicclasscalculatorutils {/* * * *3.如果是,则不要将堆栈中的操作员移动到输出流,到)添加到输出流4 .如果是普通操作员(-*/),则在添加到堆栈之前检查堆栈中操作员的优先级,如果堆栈顶部的优先级高于添加的优先级,则将堆栈顶部的操作员移动到输出流中,否则直接将操作员*/publicstaticstringcalculate (stringstr ) returncalculatereversepolish (exchangetoreversepolish ) str ); }创建私有staticstringexchangetoreversepolish (stringstr )/1.stackstackstrings=newstackstring ); //2 .输出流字符串stringbuilder builder=new stringbuilder (; //3 .如果读取了分析中缀表达式//3.1数字,则for(intI=0,numLenCount=1,直到读取了运算符); i str.length (; I=numlen count (charch=str.charat ) I; 字符串操作=ch '; 编号计数=1; if () ch ).Matches((d{1} ) ) {numLenCount=1; char nextChar=0; if () inumlencount (str.length ) ) /以下字符为边界长度nextchar=str.charat (inumlencount ) : while((nextchar ' ).matches([.d{1} ) {operand =nextChar; if(Inumlencount1) str.length ) ) nextchar=str.charat (inumlencount1); 编号计数; } else {numLenCount; 布雷克; }}}operand =' '; builder.append(operand; }else{if(ch==' () ) s.push (ch ' ); }elseif(ch==''|ch=='-' ) while ) s.size(0s.peek ).matches([-*/] ) ) builder.append ) ) }elseif(ch=='*'|ch=='/' ) ) while ) s.size ) 0 s.peek ).matches ) ([*/] ) ) builder.append ) ) }elseif(ch==' ) ) ) while ) s.size ) ) 0! s.peek ().equals (' ) ) ) builder.append ) s.pop () ) ) ) 65 (}s.pop }}while(s.size )0) builder.append ) s.pop (' ' ); }system.out.println(builder ); return builder.toString (; }/** *计算后缀的表达式* */privatestaticstringcalculatereversepolish (string () splitstr=str.split ) '); 堆叠字符串s=new堆叠字符串(; for(intI=0; i splitStr.length; I({stringch=splitstr[I]; if(ch.Matches((d.d ) )||ch.Matches ) ) (s.push ) ch ); (else ) if ) s.size )=2) {String c1=s.pop; String c2=s.pop (; if(ch.equals (' ' ) if (C1.contains ).')||c2.contains ).push (string.value of ) ) ) doubains )。 } else { s.push (string.value of ((integer.parseint ) C2 ' ) integer.parseint (C1 ' ' ) ); }elseif((-).equals(ch ) ) if (C1.contains ) ).contains ).s.push ) string.valueoor ) )。 } else { s.push (string.value of ((integer.parseint ) C2 ' )-integer.parseint (C1 ' ) ) }elseif((* . equals ) ch ) ) if ) C1.contains ).contains ).s.push ) string.value ook ) else { s.push (string.) }elseif((/).equals(ch ) ) s.push ) string.valueof ) (double.parsedouble ) C2 )double.parsedouble ' ); 返回空值; }}}return s.pop (; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。