Stack应用之中缀->后缀

来源:互联网 发布:linux退出全屏 编辑:程序博客网 时间:2024/05/02 10:06

中缀变后缀也是Stack的一个应用。原理也比较简单:

a)operatorPri函数比较运算符的优先级。

 

b)主运行函数toProcess:

   1)如果是变量则直接输出。

   2)如果是运算符则:

       1。如果栈为空则直接进栈。

       2。如果当前运算符优先级高于栈顶运算符则当前运算符进栈。

       3。如果当前运算符优先级低于栈顶运算符则栈顶运算符出栈并输出,直到栈为空或栈顶运算符优先级第于当前运算符。

       4。如果优先级相等,则一定为左右括号匹配,栈顶运算符(“(”)出栈即可。

       5。在一个while循环中进行,第三种情况不需要执行nextToken()操作(始终为同一当前和栈中元素比较),其余均要执行。

 

c)nextToken()得到下一元素。可参看编译的词法分析,虽然那个复杂的多。

 

d)罗嗦几句java,string在java中为final的所有当执行string a,b; a + b;时会造成垃圾变量,如果有很多这样的操作的话则会产生大量的垃圾变量。所以在要”改变“字符串操作比较多的时候可以使用StringBuilder或者StringBuffer。区别是StringBuilder是非线程安全的,但是更快。

 

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------------------

 

原创粉丝点击